JSON

将java对象或集合转换为符合json语法的字符串

 step 1    导入json相关的包

 step2   使用JSONObject或JSONArray

    JSONObject  json = JSONObject.fromObject(user);

    String str = json.toString();

将json字符串转换为js对象

 

 

1  如何创建JS对象

  1.1  var  person = new Object();

    person.name = 'zs';

    person.age = 18;

    alert(person.name+'  '+person.age);

  1.2       function Person(name ,age){

      this.name = name;

      this.age= age;

    }

     function test2(){

    var p = new Person('zs','22');

  alert(p.name);

  }

  1.3  用json创建js对象   str.evalJSON();

  function  test3(){

  var person = {'name':'zs','age':22};

  }

 

Date 转换位JSON见下面例子中Dateprocessor.java是怎么写的,和Quoto.java里面是怎么注册的。

 

 一下是一个例子:

模拟显示三只股票不停刷新,显示时间

servlet为quoto.java

package web;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import java.util.Random;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;

public class Quoto extends HttpServlet {
    
    public void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        Random r = new Random();
        
        String stockName1="s"+r.nextInt(999);
        double price1 = r.nextDouble()*100;
        Stock stock1 = new Stock();
        stock1.setId(stockName1);
        stock1.setPrice(price1);
        
        String stockName2="s"+r.nextInt(999);
        double price2 = r.nextDouble()*100;
        Stock stock2 = new Stock();
        stock2.setId(stockName2);
        stock2.setPrice(price2);
        
        String stockName3="s"+r.nextInt(999);
        double price3 = r.nextDouble()*100;
        Stock stock3 = new Stock();
        stock3.setId(stockName3);
        stock3.setPrice(price3);
        
        StockScreen ss = new StockScreen();
        ss.stocks.add(stock1);
        ss.stocks.add(stock2);
        ss.stocks.add(stock3);
        
        ss.setDate(new Date());
        
        DateProcessor processor = new DateProcessor();
        JsonConfig config = new JsonConfig();
        config.registerJsonValueProcessor(Date.class, processor);
        JSONArray json = JSONArray.fromObject(ss,config);
        String str =  json.toString();
        System.out.print(str);
        out.println(str);
        out.close();
    }

}
View Code

jsp为stock.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<html>
<head>
    <title>Insert title here</title>
    <style>
        #d1{
            width:400px;
            height:400px;
            border:1px solid black;
            margin-left:400px;
            margin-top:60px;
        }
        
    </style>
    <script type="text/javascript" src="js/prototype1.6.js"></script>
    <script type="text/javascript">
        function getXmlHttpRequest(){
        var xmlHttpRequest = null;
     if ((typeof XMLHttpRequest) != 'undefined') 
     {
         //非ie浏览器
      xmlHttpRequest = new XMLHttpRequest();
     }else {
     //ie浏览器
     xmlHttpRequest = 
     new ActiveXObject('Microsoft.XMLHttp');
     }
     return xmlHttpRequest;
    }    
        var taskId;
        function allquoto(){
            if($("b1").value=="stop"){
                stopQuoto();
            }else if($("b1").value=="start"){
                quoto();
            }
        }
        function quoto(){
            taskId = setInterval(getPrice,500);
            $("b1").value="stop";
        }
        function stopQuoto(){
            clearInterval(taskId);
            $("b1").value="start";
        }
        function getPrice(){
            var xmlReq = getXmlHttpRequest();
            xmlReq.open('post','quoto',true);
            xmlReq.setRequestHeader("Content-Type",
            "application/x-www-form-urlencoded");
            xmlReq.onreadystatechange=function(){
                //s10010,10
                if(xmlReq.readyState == 4){
                    var rsTxt = xmlReq.responseText;
                    //alert(rsTxt);
                    var ss = rsTxt.evalJSON();
                    //alert(rsTxt);
                    $('d1').innerHTML=ss[0].stocks[0].id+'<br>'+ss[0].stocks[0].price+'<br><br>'+
                    ss[0].stocks[1].id+'<br>'+ss[0].stocks[1].price+'<br><br>'+
                    ss[0].stocks[2].id+'<br>'+ss[0].stocks[2].price+'<br><br>'+
                    '<br>'+ss[0].date;
                }
            }
            xmlReq.send(null);
        }
    </script>
</head>
<body style="font-size:20pt;" onload="quoto();">
    <div id="d1">
    </div>
    <input type="button" id="b1" value="stop" style="margin-left:400px;" onclick="allquoto();"/>
</body>
</html>
View Code

转化date的转换器为Dateprocessor.java

package web;

import java.text.*;
import java.util.Date;

import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;

public class DateProcessor implements JsonValueProcessor {

    
    @Override
    public Object processArrayValue(Object arg0, JsonConfig arg1) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public Object processObjectValue(String arg0, Object arg1, JsonConfig arg2) {
        // TODO Auto-generated method stub
         Date date=(Date)arg1;
         DateFormat format=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
         String time=format.format(date);
        return time;
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

    }

}
View Code

几个类的编写为Stock.java和StockScreen.java

package web;

import java.util.Date;

public class Stock {
    String id;
    double price;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double price) {
        this.price = price;
    }
    

}
Stock.java

 

package web;

import java.util.Date;
import java.util.LinkedList;
import java.util.List;

public class StockScreen {
    List<Stock> stocks = new LinkedList<Stock>();
    Date date;
    public List<Stock> getStocks() {
        return stocks;
    }
    public void setStocks(List<Stock> stocks) {
        this.stocks = stocks;
    }
    public Date getDate() {
        return date;
    }
    public void setDate(Date date) {
        this.date = date;
    }

    
}
StockScreen.java

 运行结果为:

posted on 2015-12-22 19:40  编世界  阅读(234)  评论(0编辑  收藏  举报