JSON的深刻剖析

J SON有两种结构,一种是对象,另一种是数组。
      (1).对象(object),是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)     分  隔。 是由{}括起来的,格式例如,{"key1":value1,"key2":value2,"key3":value3,...}。
      (2).数组(array) ,是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔,是由[]括起来的。格式例如,[{"key1":value1,"key2":value2,"key3":value3},{"key1":value1,"key2":value2,"key3":value3}...]。
三.JSON解析。   

JavaScript中的JSON的解析与序列化
① 通过eval()函数将JSON字符串解析为JavaScript原生值
var str = '[{"name":"james","height":"203","number":"23"}, {"name":"kobe","height":"198","number":"24"}]'; //定义JSON字符串 var oJson = eval(str); //通过eval()函数解析拿到JavaScript原生值 //接下来便可通过JS进行操作 alert(oJson[0].name); //james alert(oJson[1].height); //198
② 通过全局对象JSON的两个方法parse()和stringify()进行操作
parse()可以将JSON字符串转化为JavaScript原生值:
var str = '[{"name":"james","height":"203","number":"23"},{"name":"kobe","height":"198","number":"24"}]'; //定义JSON字符串 var oJson = JSON.parse(str); //通过JSON对象的parse方法得到该JSON字符串的JavaScript原生值 document.write("姓名:" + oJson[1].name + "<br/>" + "身高:" + oJson[1].height + "cm" + "<br/>" + "球衣号码:" + oJson[1].number);
stringify()可以将原生JavaScript值转换为JSON字符串:
var oJson = [{ name : "james", height : 203, number : 23 },{ name : "kobe", height : 198, number : 24 }]; var jsonStr = JSON.stringify(oJson,['name','number'],4); alert(jsonStr);
JSON.stringify(oJson,['name','number'],4);中的第一个参数表示需要转化的JS对象;第二个参数用于过滤结果,表示只留下name和number,其他的key以及所对应的的value都不要了;第三个参数表示在JSON字符串中保留的缩进数,有缩进时可读性更高,该参数也可以是一个字符串,比如'----',

Java中的json转化
commons-beanutils-1.7.0.jar    
commons-lang-2.1.jar   
ezmorph-1.0.2.jar   
json-lib-1.1-jdk15.jar

List集合转换成json代码   
List  list  =  new  ArrayList();  
list.add( "first" );  
list.add( "second" );  
JSONArray  jsonArray2  =  JSONArray .fromObject( list );  

 Map集合转换成json代码  
Map  map  =  new  HashMap();  
map.put("name", "json");  
map.put("bool", Boolean.TRUE);  
map.put("int", new Integer(1));  
map.put("arr", new String[] { "a", "b" });  
map.put("func", "function(i){ return this.arr[i]; }");  
JSONObject  json  =  JSONObject .fromObject(map);
  
Bean转换成json代码  
SONObject  jsonObject  =  JSONObject .fromObject(new JsonBean()); 
 
数组转换成json代码   
boolean[]  boolArray  =  new  boolean[] { true, false, true };  
JSONArray  jsonArray1  =  JSONArray .fromObject(boolArray);  

一般数据转换成json代码   
JSONArray  jsonArray3  =  JSONArray .fromObject("['json','is','easy']" ); <p>   
[ color = red ]response.getWriter().write(jsonArray2.toString());[/color] </p>   

JSONObject jo = new JSONObject();
jo.put("path", path);
response.getWriter().write(jo.toString());
// 把对象转换成json
ObjectMapper om = new ObjectMapper();
om.setSerializationInclusion(Inclusion.NON_NULL);

User user = new User();
user.setUsername("成聪");
user.setPassword("123456");

StringWriter w = new StringWriter();
om.writeValue(w, user);
System.out.println(w.toString());
// 把json转换成对象
User user2 = om.readValue(w.toString(), User.class);
System.out.println(user2.toString());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值