HelloMyWord

导航

json对象和字符串的互相转化

1、前端的json处理

JSON字符串:
var str = '{ "name": "cxh", "sex": "man" }'; 
JSON对象:
var obj= { "name": "cxh", "sex": "man" };

 

 jQuery的转换方式

 

$.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象 

 

 浏览器支持的转换方式(Firefox,chrome,opera,safari,ie9,ie8)等浏览器:

 

JSON.parse(jsonstr); //可以将json字符串转换成json对象 
JSON.stringify(jsonobj); //可以将json对象转换成json对符串 

注:ie8(兼容模式),ie7和ie6没有JSON对象,推荐采用JSON官方的方式,引入json.js。 

 

str.parseJson(str);//可以将json字符串转换成json对象

obj.toJSONString(); //将JSON对象转化为JSON字符

注:新版本的 JSON 修改了 API,将 JSON.stringify() 和 JSON.parse() 两个方法都注入到了 Javascript 的内建对象里面,前者变成了 Object.toJSONString(),而后者变成了 String.parseJSON()。如果提示找不到toJSONString()和parseJSON()方法,则说明您的json包版本太低

 

Javascript支持的转换方式

eval('(' + jsonstr + ')'); //可以将json字符串转换成json对象
注:ie8(兼容模式),ie7和ie6也可以使用eval()将字符串转为JSON对象。 但是不建议使用这种,很不安全。

2、Java中的json处理

 User.java 对象

 1 public class User {
 2     private String name;
 3 
 4     private String password;
 5 
 6     private int age;
 7 
 8     private Integer score;
 9 
10     public User() {
11     }
12 
13     public User(String name, String password, int age, Integer score) {
14         this.name = name;
15         this.password = password;
16         this.age = age;
17         this.score = score;
18     }
19 
20     public int getAge() {
21         return age;
22     }
23 
24     public String getName() {
25         return name;
26     }
27 
28     public String getPassword() {
29         return password;
30     }
31 
32     public Integer getScore() {
33         return score;
34     }
35 
36     public void setAge(int age) {
37         this.age = age;
38     }
39 
40     public void setName(String name) {
41         this.name = name;
42     }
43 
44     public void setPassword(String password) {
45         this.password = password;
46     }
47 
48     public void setScore(Integer score) {
49         this.score = score;
50     }
51 
52     public String toString() {
53         return "[name=" + name + ", password=" + password + ", age=" + age + ", score=" + score + "]";
54     }
55 
56 }
View Code

 

把java对象转换成json对象,并转化为字符串

1     @Test
2     public void javaToStringInJsonObject() {
3         User user = new User("YuB", "123", 25, 100);
4         System.out.println("java对象:" + user);
5         JSONObject json = JSONObject.fromObject(user);
6         System.out.println("转化为json字符串:" + json.toString());
7     }

 

 输出结果:

java对象:[name=YuB, password=123, age=25, score=100]
转化为json字符串:{"age":25,"name":"YuB","password":"123","score":100}

  

把JSON字符串转换为JAVA 对象

1   @Test
2     public void javaFormStringInJsonObject() {
3         String jsonStr = "{\"age\":25,\"name\":\"YuB\",\"password\":\"123\",\"score\":100}";//使用 \ 来转义双引号
4         System.out.println("json字符串为:" + jsonStr);
5         JSONObject json = JSONObject.fromObject(jsonStr);
6         User user = (User) JSONObject.toBean(json, User.class);
7         System.out.println("转化为java对象:" + user);
8     }

 

输出结果:

json字符串为:{"age":25,"name":"YuB","password":"123","score":100}
转化为user对象:[name=YuB, password=123, age=25, score=100]

 

 

把java 对象列表转换为json对象数组,并转为字符串

1     @Test
2     public void javaArrayToStringInJsonArray() {
3         User user = new User("YuB", "123", 25, 100);
4         ArrayList<User> list = new ArrayList<>();
5         list.add(user);
6         System.out.println("java对象:" + list);
7         JSONArray json = JSONArray.fromObject(list);
8         System.out.println("转化为json字符串:" + json);
9     }

 

输出结果:

java对象:[[name=YuB, password=123, age=25, score=100]]
转化为json字符串:[{"age":25,"name":"YuB","password":"123","score":100}]

 

 

把JSON字符串转换为JAVA 对象数组

1     @Test
2     public void javaArrayFormStringInJsonArray() {
3         String jsonStr = "[{\"age\":25,\"name\":\"YuB\",\"password\":\"123\",\"score\":100}]";
4         System.out.println("json字符串为:" + jsonStr);
5         JSONArray json = JSONArray.fromObject(jsonStr);
6         List<User> list = (List<User>) JSONArray.toCollection(json, User.class);
7         System.out.println("转化为java对象:" + list);
8     }

 

输出结果:

json字符串为:[{"age":25,"name":"YuB","password":"123","score":100}]
转化为user对象:[[name=YuB, password=123, age=25, score=100]]

 总结:在Java中,Java对象和json格式的字符串的相互转化需要借助json对象作为过渡!

posted on 2017-06-21 09:50  HelloMyWord  阅读(262)  评论(0)    收藏  举报