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
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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(); } }
jsp为stock.jsp
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<%@ 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>
转化date的转换器为Dateprocessor.java
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 } }
几个类的编写为Stock.java和StockScreen.java
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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; } }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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; } }
运行结果为: