一: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
- package org.java.json.fastjson.bean;
- import com.alibaba.fastjson.JSONObject;
- import com.alibaba.fastjson.annotation.JSONField;
- public class Person {
- @JSONField(name="name")
- private String name;
- @JSONField(name="age")
- private String age;
- @JSONField(name="desc")
- private String desc;
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getAge() {
- return age;
- }
- public void setAge(String age) {
- this.age = age;
- }
- public String getDesc() {
- return desc;
- }
- public void setDesc(String desc) {
- this.desc = desc;
- }
- public void setNAME(String NAME) {
- this.name = NAME;
- }
- public void setAGE(String AGE) {
- this.age = AGE;
- }
- public void setDESC(String DESC) {
- this.desc = DESC;
- }
- public String toString() {
- return JSONObject.toJSONString(this);
- }
- }
[html] view plain copy
- package org.java.json.fastjson.json;
- import org.java.json.fastjson.bean.Person;
- import org.junit.Before;
- import org.junit.Test;
- import com.alibaba.fastjson.JSONObject;
- public class PersonTest {
- private Person person;
- /**
- * 初始化对象
- */
- @Before
- public void setUp() {
- person = new Person();
- person.setName("xianglj");
- person.setAge("20");
- person.setDesc("只是一个测试");
- }
- @Test
- public void test() {
- String jsonStr = JSONObject.toJSONString(person);
- System.out.println("bean to json:" + jsonStr);
- //改变json的key为大写
- jsonStr = jsonStr.toUpperCase();
- System.out.println("需要转换的json:" + jsonStr);
- person = JSONObject.parseObject(jsonStr, Person.class); //真蛋疼
- System.out.println("json to bean:" + person.getName());
- }
- }
输出如下:
[java] view plain copy
- bean to json:{"age":"20","desc":"只是一个测试","name":"xianglj"}
- 需要转换的json:{"AGE":"20","DESC":"只是一个测试","NAME":"XIANGLJ"}
- 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);