json对象
js中 {}做用等价于new Object();
- 一个简单的json对象 (访问方式:对象.属性)
var obj={
name:'armo',
age:12,
hobby:['a','v','x'],
fn:function(){alert(this.age);},
birthday:new Date() //最后一个属性不需要逗号结尾
}
- 一个json数组 (访问方式 数组对象[i].属性)
var objs= [
{name:'armo1',age:12},
{name:'armo2',age:12},
{name:'armo3',age:12}
]
- 将一个可以变成json的字符串,变成json
var str="{name:'armo',age:12}";
var obj=eval("("+str+")"); //eval括号的字符串 必须再被()包裹
p(obj);
//同理可以使用于数组
jsonlib
jsonlib.jar;用的最广泛的json转换架包
用于将java中的对象或map转为对应json对象的字符串,
将list转换为对应的json数组对象的字符串,
resp.setContentType("text/json;charset=utf-8");
String JsonString=JSONSerializer.toJSON(list/map/对象);
fastjson
fastjson.jar;由阿里巴巴开放的,最快速的json转换架包
resp.setContentType("text/json;charset=utf-8");
String JsonString=JSON.toJSONString(list/map/对象);
通常java中的对象,并不是所有属性都要转换为json的属性,此时,可以在类中添加方法,将需要转为json属性的属性,存于一个map中.将map转为json对象
class User{
private Long id;
private String name;
private Integer age; //age不需要转为json对象的属性
//对象调用该方法 返回map,将map拿去转为json字符串
public Map<String,Object> JSONMap(){
Map<String,Object> map=new HashMap<>();
map.put("name", this.name);
map.put("id", this.id);
return map;
}
}
//一个User对象转为Json对象的字符串
String JsonString=JSON.toJSONString(user.JSONMap);
//一个List<User>对象objList转为JSON数组对象的字符串
List<Map<String,Object>> mapList =new ArrayList();
for (int i=0;i<objList.seze(),i++){
mapList.add(objList.get(i).JSONMap);//将List<User>的对象一个个转为map,存入List<Map>
}
String JsonString=JSON.toJSONString(mapList);