目录
com.alibaba.fastjson工具包
net.sf.json.JSONObject工具包
json格式转化简单介绍:
json类:
com.alibaba.fastjson工具包:
1、parseObject(String str)的作用
JSON.parseObject(String str)是将str转化为相应的JSONObject对象,其中str是“键值对”形式的json字符串,转化为JSONObject对象之后就可以使用其内置的方法,进行各种处理了。
2、JSON.parseObject(String str)与JSONObject.parseObject(String str)的区别
根据源码显示:JSON是一个抽象类,JSON中有一个静态方法parseObject(String text),将text解析为一个JSONObject对象并返回;JSONObject是一个继承自JSON的类,当调用JSONObject.parseObject(result)时,会直接调用父类的parseObject(String text)。所以两者没什么区别,一个是用父类去调用父类自己的静态的parseObject(String text),一个是用子类去调用父类的静态parseObject(String text),两者调的是同一个方法。
package com.test;
public class TestPerson {
private int age;
private String name;
public TestPerson(){
}
public TestPerson(int age,String name){
this.age=age;
this.name=name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package com.test;
import java.util.*;
import com.alibaba.fastjson.*;
public final class TestFastJson {
public static void main(String[] args) {
// TODO Auto-generated method stub
TestPerson json = new TestPerson(19,"李明");
List<TestPerson> list = new ArrayList<TestPerson>();
list.add(json);
list.add(new TestPerson(12,"张三"));
//将集合或者对象序例化成JSON
System.out.println(JSON.toJSON(json));
System.out.println( JSON.toJSON(list) );
//Json串反序列化成对象
TestPerson person = JSON.parseObject("{\"name\":\"李明\",\"age\":19}", TestPerson.class);
System.out.printf("name:%s,age:%d\n",person.getName(),person.getAge());
String str = "[{\"name\":\"李明\",\"age\":19},{\"name\":\"张三\",\"age\":12}]";
//数组对象反序列化成集合
List<TestPerson> listPerson = JSON.parseArray(str,TestPerson.class);
for(TestPerson item : listPerson){
System.out.println( item.getName() );
System.out.println( item.getAge());
}
//没有对象直接解析JSON对象
JSONObject jobj = JSON.parseObject("{\"name\":\"李明\",\"age\":19}");
System.out.printf("name:%s,age:%d\n",jobj.getString("name"),jobj.getBigInteger("age"));
//没有对象直接解析JSON数组
JSONArray jarr = JSON.parseArray("[{\"name\":\"李明\",\"age\":19},{\"name\":\"张三\",\"age\":12}]");
for(int i=0,len=jarr.size();i<len;i++){
JSONObject temp= jarr.getJSONObject(i);
System.out.printf("name:%s,age:%d\n",temp.getString("name"),temp.getBigInteger("age"));
}
for(Object obj:jarr){
System.out.println(obj.toString());
}
}
}
net.sf.json.JSONObject工具包:
net.sf.json.JSONObject 提供了一个将其他类型的数据转换为转换为JSONObject的方法fromObject()
import net.sf.json.JSONObject
//构建map对象,并且把需要发送给前端的东西添加进入
Map<String,String> params=new HashMap<>();
params.put("username","kylin");
params.put("password","123456");
//java对象变成json对象
JSONObject jsonObject=JSONObject.fromObject(params);
//json对象转换成json字符串
String jsonStr=jsonObject.toString();
System.out.println(jsonStr);
net.sf.json.JSONObject将null转换成了一个字符串"null",com.alibaba.fastjson则是将null转换为了null,两者是有不同的。
几种方式的比较:
传统Json方式:复杂的Json数据转换成实体类存在缺陷,性能和功能不够完善
Gson方式:功能方面在几种方式中最优,性能方面不如Jackson方式
FastJson方式:复杂的实体类转换成Json数据存在缺陷,解析json的速度优于其他方式
python:
Python3 中可以使用 json 模块来对 JSON 数据进行编解码,它包含了两个函数:
json.dumps(): 对数据进行编码。
json.loads(): 对数据进行解码。
将json字符串转化为字典
import json
str = '{"k1":1, "k2": "1", 'k3':"1"}'
res= json.loads(str) # 根据字符串书写格式,将字符串自动转换成 字典类型
print res
将字典转json
#!/usr/bin/python
import json
data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]
json = json.dumps(data)
print json