json格式转化(Java和python)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012447842/article/details/84784697

 

目录

java

     com.alibaba.fastjson工具包

     net.sf.json.JSONObject工具包

python


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

参考:https://blog.csdn.net/dafeige8/article/details/73924034/

https://blog.csdn.net/jishamo/article/details/53465251

猜你喜欢

转载自blog.csdn.net/u012447842/article/details/84784697