json

一:json和xml都是数据的表示格式,并不是数据的传递方式。数据怎么传的应该指用的什么网络传输层协议,数据怎么封装的指用的什么网络应用层协议。

二:json即javascript object notation,json语法是javascript语法的子集。一种特殊结构的字符串而已,只有对象和数组两种格式(此对象和数组指的是javascript语法中的对象和数组)。其数据的书写格式是:"名称":"值"。与后台编程语言如java,C#,python,php的数据表示语法(数据类型)无关。

三:前台和后台可以直接传递json,但前台怎么将数据组织为json数据,后台怎么将数据组织为json数据,后台怎么接收前台传过来的json数据,接收后怎么处理?

目前大概情况是,前台传json使用get方式需要重新处理下大括号。(json只是一种数据表示格式,get和post应该都可以)

 

FastJson的@JSONField注解:

http://blog.csdn.net/u011425751/article/details/51219242

 

  1. package org.java.json.fastjson.bean;  
  2.   
  3. import com.alibaba.fastjson.JSONObject;  
  4. import com.alibaba.fastjson.annotation.JSONField;  
  5.   
  6. public class Person {  
  7.   
  8.     @JSONField(name="name")  
  9.     private String name;  
  10.       
  11.     @JSONField(name="age")  
  12.     private String age;  
  13.       
  14.     @JSONField(name="desc")  
  15.     private String desc;  
  16.       
  17.     public String getName() {  
  18.         return name;  
  19.     }  
  20.     public void setName(String name) {  
  21.         this.name = name;  
  22.     }  
  23.     public String getAge() {  
  24.         return age;  
  25.     }  
  26.     public void setAge(String age) {  
  27.         this.age = age;  
  28.     }  
  29.     public String getDesc() {  
  30.         return desc;  
  31.     }  
  32.     public void setDesc(String desc) {  
  33.         this.desc = desc;  
  34.     }  
  35.       
  36.     public void setNAME(String NAME) {  
  37.         this.name = NAME;  
  38.     }  
  39.       
  40.     public void setAGE(String AGE) {  
  41.         this.age = AGE;  
  42.     }  
  43.       
  44.     public void setDESC(String DESC) {  
  45.         this.desc = DESC;  
  46.     }  
  47.       
  48.     public String toString() {  
  49.         return JSONObject.toJSONString(this);  
  50.     }  
  51. }  

 

[html] view plain copy

  1. package org.java.json.fastjson.json;  
  2.   
  3. import org.java.json.fastjson.bean.Person;  
  4. import org.junit.Before;  
  5. import org.junit.Test;  
  6.   
  7. import com.alibaba.fastjson.JSONObject;  
  8.   
  9. public class PersonTest {  
  10.   
  11.     private Person person;  
  12.       
  13.     /**  
  14.      * 初始化对象  
  15.      */  
  16.     @Before  
  17.     public void setUp() {  
  18.         person = new Person();  
  19.         person.setName("xianglj");  
  20.         person.setAge("20");  
  21.         person.setDesc("只是一个测试");  
  22.     }  
  23.       
  24.     @Test  
  25.     public void test() {  
  26.         String jsonStr = JSONObject.toJSONString(person);  
  27.         System.out.println("bean to json:" + jsonStr);  
  28.           
  29.         //改变json的key为大写  
  30.         jsonStr = jsonStr.toUpperCase();  
  31.           
  32.         System.out.println("需要转换的json:" + jsonStr);  
  33.         person = JSONObject.parseObject(jsonStr, Person.class); //真蛋疼 
  34.         System.out.println("json to bean:" + person.getName());  
  35.     }  
  36. }  


输出如下:

 

 

 

[java] view plain copy

  1. bean to json:{"age":"20","desc":"只是一个测试","name":"xianglj"}  
  2. 需要转换的json:{"AGE":"20","DESC":"只是一个测试","NAME":"XIANGLJ"}  
  3. json to bean:null  

个人总结:

1.json字符串最外层大括号对应bean类名,json字符串大括号中内容对应bean属性。

2.json字符串内容和bean属性不需要一一对应,谁多谁少都可以正常进行。

3.直接用parseObject方法。

 

 

java中除了fastjson外还可用jackson

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
 ObjectMapper mapper = new ObjectMapper();
        //User类转JSON
        //输出结果:{"name":"zhangsan","age":20,"birthday":844099200000,"email":"zhangsan@163.com"}
        String json = mapper.writeValueAsString(user);

 

 String json = "{\"name\":\"zhangsan\",\"age\":20,\"birthday\":844099200000,\"email\":\"zhangsan@163.com\"}";
ObjectMapper mapper = new ObjectMapper();
        User user = mapper.readValue(json, User.class);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值