json生成和解析
package fastjson; import java.util.*; import com.alibaba.fastjson.JSON; class User{ private String name; private int age; public User(){ } public User(String name,int age){ this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } class Group{ private String id; private String name; private List<User> users = new ArrayList<User>(); public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public List<User> getUsers() { return users; } public void setUsers(List<User> users) { this.users = users; } } public class Main { public static void main(String[] args) { Group group = new Group(); group.setId("01"); group.setName("team gourp"); List<User> users = new ArrayList<User>(); users.add(new User("tomcat",12)); users.add(new User("jerry",12)); group.setUsers(users); //转成json字符串 String jsonString = JSON.toJSONString(group); System.out.println(jsonString); //将json字符串转成对象 Group g = JSON.parseObject(jsonString, Group.class); System.out.println(g.getUsers().get(0).getName()); } }
控制台打印如下:
{"id":"01","name":"team gourp","users":[{"age":12,"name":"tomcat"},{"age":12,"name":"jerry"}]} tomcat
上面用到的转JSON的类是来自阿里巴巴的牛人写的fastjson,我把jar包和源码都贴到下面,有想用的自己下载下来看看。
1、JS自带方法eval()解析JSON字符串
将上面输出的JSON字符串放入eval()中解析:
<html> <head> <script type="text/javascript"> var obj = eval("("+'{"id":"01","name":"team gourp","users":[{"age":12,"name":"tomcat"},{"age":12,"name":"jerry"}]}'+")"); alert(obj.id+","+obj.users[0].name+","+obj.users[1].name); </script> </head> </html>
页面弹出对话框,显示如下:
01,tomcat,jerry
这里注意下不能直接把json字符串放到eval()的括号里面,由于json是以”{}”的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。
加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语 句(statement)来执行。
出了上面的eval()方法解析json字符串,下面这个也同样奏效
var json='{"name":"CJ","age":18}'; data =(new Function("","return "+json))();
大家可以试试。