本人博客: https://blog.onfree.cn (●ˇ∀ˇ●)


11分钟了解Java的五种json库及操作

你的所言所行,全都闪烁着光芒,太过刺目,于是我闭上双眼,但内心还是无法停止对你的憧憬


​ Java 中json格式的字符串写法

String paramess="{\"name\":\"Mahesh\",\"password\":21}";

1. json-lib

json-lib具有通用性,但是比较麻烦,且时间有些久远,jar包只更新到2010年

项目地址:http://json-lib.sourceforge.net/index.html

1.1 maven依赖
<dependency>
    <groupId>net.sf.json-lib</groupId>
    <artifactId>json-lib</artifactId>
    <version>2.4</version>
    <classifier>jdk15</classifier>//jar包区分jdk1.3和jdk1.5版本
</dependency>
1.2 具体操作
  • 1.2.1 JSONObject与String相互转换

    JSONObject jsonobject= JSONObject.fromObject(str);
    String str = JSONObject.toString
    
  • 1.2.2 获取JSONObject数据及遍历JSONArray

    String str = JSONObject.getInt(“keys”)
    String str = JSONObject.getString(“keys”)
    JSONArray = JSONObject.getJSONArray(String);

  • 遍历:

    for(i<JSONArray.size())
    {
       JSONObject = JSONArray.getJSONObject(i); 
       JSONObject.getInt()...
    }
     
    Iterator<String> iterator = JSONObject.keys(); 
      while(iterator.hasNext()){
        String keys = iterator.next();
    }
    
  • 1.2.2 JSONObject转对象

    Grade grade = (Grade)JSONObject.toBean(jsonObject,Grade.class);
    

2.org.json

与json-lib相类似

2.1maven依赖
    <dependency>
          <groupId>org.json</groupId>
          <artifactId>json</artifactId>
          <version>20170516</version>
    </dependency>
2.2 创建json对象
    JSONObject = new JSONObject(str);
2.3 操作
net.sf.json.JSONObject: 没有严格要求获取字段的类型跟getXXX()的类型一样
org.json.JSONObject:获取的字段类型必须跟getXXX()的类型一样
2.4 JSONArray.length()

3. jackSon

springMVC内置解析器就是jackson

项目地址:https://github.com/FasterXML/jackson

3.1 maven依赖
    <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-databind</artifactId>
          <version>2.9.0</version>
    </dependency>
3.2 对象和String之间的转换
    ObjectMapper mapper=new ObjectMapper();
    //json转对象
    Grade grade=mapper.readValue(json1, Grade.class);
    //对象转json
    mapper.writeValueAsString(grade);
3.3 对JsonNode的遍历
    JsonNode jsonNode = mapper.readTree(jsonStr);
    Iterator<String> keys = jsonNode.fieldNames();
    while(keys.hasNext()){
        String fieldName = keys.next();
        System.out.println(fieldName + " : " + jsonNode.path(fieldName).toString());
    }

4. fastjson

阿里巴巴开源框架,效率最高

项目地址:https://github.com/alibaba/fastjson

4.1 maven依赖
    <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>fastjson</artifactId>
          <version>1.2.37</version>
    </dependency>
4.2 String转对象
    Student stu = JSON.parseObject(json,Student.class);
    List<String> list=JSON.parseArray(json2, String.class);
4.3 对象转String
    JSON.toJSONString(stu);
    //or String json = JSON.toJSON(stu).toString();

5.GSON

谷歌产品 ,前功能最全

项目地址:https://github.com/google/gson

5.1 maven依赖
    <dependency>
          <groupId>com.google.code.gson</groupId>
          <artifactId>gson</artifactId>
          <version>2.8.1</version>
    </dependency>
5.2 String转对象
    Gson gson = new Gson();
    Grade grade = gson.fromJson(json1,Grade.class);
     
    ArrayList<String> list=gson.fromJson(json2,new TypeToken<ArrayList<String>>(){}.getType());
5.3 对象转String
    String json=gson.toJson(grade);

本博客原文:https://blog.onfree.cn/posts/d5737b81.html
转载请申明原作者,谢谢!