[size=large][color=red][b]json生成和解析[/b][/color][/size]
控制台打印如下:
上面用到的转JSON的类是来自阿里巴巴的牛人写的fastjson,我把jar包和源码都贴到下面,有想用的自己下载下来看看。
1、JS自带方法eval()解析JSON字符串
将上面输出的JSON字符串放入eval()中解析:
页面弹出对话框,显示如下:
[b][color=red]这里注意下不能直接把json字符串放到eval()的括号里面,由于json是以”{}”的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。[/color][/b]
加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语 句(statement)来执行。
[b][color=red]出了上面的eval()方法解析json字符串,下面这个也同样奏效[/color][/b]
大家可以试试。
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
[b][color=red]这里注意下不能直接把json字符串放到eval()的括号里面,由于json是以”{}”的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。[/color][/b]
加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语 句(statement)来执行。
[b][color=red]出了上面的eval()方法解析json字符串,下面这个也同样奏效[/color][/b]
var json='{"name":"CJ","age":18}';
data =(new Function("","return "+json))();
大家可以试试。