一、JSON的标准格式
里面的是一个对象,如果是多个对象,则用逗号间隔,即{},{},这样就组成了一个对象序列,为了辨别开始和结束,则需要加上[]才能进行传递,则实际传递的形式应该是[{},{}],如果只要传递一个对象,则{}的形式就可以了。接下来就是对象属性的表现方式了,属性必须在”“里面,属性与值之间用:隔开,属性之间用,来分隔,如果属性的值为数组,则用[]包括起来,这样实际传递的数据格式可能有:1、{“属性1”:值1,”属性2”:值2},如果值为字符串,则也需要用”“括起来(下同)。2、{“属性1”:值1,”属性2”:[值1,值2]},其中属性2是一个数组,包含了值1和值2。3、{“属性1”:值1,”属性2”:{“属性a”:值a,”属性b”:[值b,值c]}},这个比较复杂了,属性2是个对象,这个对象由包含属性a和属性b,属性b又是一个数组包含值b和值c。我想这些应该是最基本了,其余的就是在此基础上的拓展而已。
二、JSON与其他格式的互相转化
【jAVA————->JSON】
/**
*后台怎么拼装JSON格式的字符串
*/
public String javaToJSON() {
JSONObject jsonObj = new JSONObject();
jsonObj.put("username", "张三");
jsonObj.put("password", "123456");
return jsonObj.toString();//{"password", "123456","username", "张三"}
}
【JSON———–>XML】
/**
*JSON格式的字符串转换成XML格式的字符串
*/
public String jsonToXML() {
String jsonStr = "{\"password\":\"123456\",\"username\":\"张三\"}";
JSONObject json = JSONObject.fromString(jsonStr);
XMLSerializer xmlSerializer = new XMLSerializer();
xmlSerializer.setRootName("user_info");
xmlSerializer.setTypeHintsEnabled(false);
String xml = xmlSerializer.write(json);
return xml;
}
返回结果;
<?xml version="1.0" encoding="utf-8"?>
<user_info>
<password>123456</password>
<username>刘梦冰</username>
</user_info>
【XML———–>JSON】
/**
*XML格式的字符串转换成JSON格式的字符串
*/
public String xmlToJSON(){
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><user_info><password>123456</password><username>张三</username></user_info>";
JSON json=XMLSerializer.read(xml);
return json.toString();
}
public mapToJSON(Map<Object,Object>map)
{
return JSONObject.fromobject(map).tostring();
}
【Map ———->json:】
/**
* 将map集合转换为json语句表示
*
* @param map 集合
* @return 得到的Map解析的json语句
*/
public String mapToJson(Map<Object, Object> map) {
JSONObject jsonObject = JSONObject.fromObject(map); //将集合解析为 json对象语句(net.sf.json.JSONObject)
return jsonObject.toString(); //返回json语句
}
【json————>Map:】
/**
* 将json格式封装的字符串数据转换成java中的Map数据
* @return
*/
private Map<Object, Object> jsonToMap(String json) {
Map<Object, Object> map = new HashMap<Object, Object>();
JSONObject jsonMap = JSONObject.fromObject(json); JSONObject(net.sf.json.JSONObject)
Iterator<String> it = jsonMap.keys();
while(it.hasNext()) {
String key = (String) it.next();
String value = JSONObject.fromObject(jsonMap.get(key));
map.put(key, value);
}
return map;
}
【JSON————->List】
/**
* 将json格式封装的列表数据转换成java的List数据
* @return
*/
private static Object JSON2List(String json) {
return JSONArray.toList(JSONArray.fromObject(json));
}
【JSON——->简单JavaBean/复杂JavaBean】
/**
* 只包含基本数据类型的简单实体类(getter、setetr方法略)
*/
public class SimpleUser {
private int id;
private String name;
private String sex;
private int age;
private String province;
}
/**
* 包含复杂类型的实体类
*/
public class ComplexUser extends SimpleUser {
private List<String> address;
public ComplexUser() {
}
public ComplexUser(int id, String name,
String sex, int age, String province,
List<String> address) {
super(id, name, sex, age, province);
this.address = address;
}
public List<String> getAddress() {
return address;
}
public void setAddress(List<String> address) {
this.address = address;
}
}
【JSON————->简单JavaBean】
/**
* 将json格式封装的简单实体类型数据转换成简单类型的javabean(只包含简单的数据类型)
*/
private Object JSONtoSimpleBean() {
String jsonStr = "{\"age\":23,\"id\":123,\"name\":\"tt_2009\"," +
"\"province\":\"上海\",\"sex\":\"男\"}";
JSONObject jsonBean = JSONObject.fromObject(jsonStr);
return JSONObject.toBean(jsonBean, SimpleUser.class);
}
【JSON—————->复杂JavaBean】
/**
* 将json格式封装的复杂实体数据转换成复杂类型的javabean(对象中包含其它复杂对象,如收货地址用List存储)
*/
private static Object JSON2ComplexBean() {
String jsonStr = "{\"address\":[\"北京\",\"上海\",\"广州\"]," +
"\"age\":23,\"id\":123,\"name\":\"tt_2009\",\"province\":\"上海\",\"sex\":\"男\"}";
JSONObject jsonBean = JSONObject.fromObject(jsonStr);
return JSONObject.toBean(jsonBean, ComplexUser.class);
}