`
dyy_gusi
  • 浏览: 209424 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Java处理JSON

    博客分类:
  • Java
阅读更多

Json在数据传输中很好用,原因是JSON 比 XML 更小、更快,更易解析。

在Java程序中,如何使用处理JSON,现在有很多工具可以处理,比较流行常用的是google的gson和alibaba的fastjson,具体使用如下:

1、读取json然后处理

class ReadJSON
{
    public static void main(String[] args)
    {
        String jsonStr = "{ \"one\":\"one\", \"two\":[{ \"two_1_1\":2.11, \"two_1_2\":2.12}, { \"two_2_1\":\"2.21\" } ], \"three\":[\"abc\",false], \"four\":{\"four_1\":4.1, \"four_2\":4.2 } }";
        // one:简单类型
        // two:对象数组(最复杂)
        // three:数组类型
        // four:对象类型

        jsonGoogle(jsonStr);
        jsonAlibaba(jsonStr);
    }

    // gosn读取处理json
    public static void jsonGoogle(String jsonStr)
    {
        JsonParser parser = new JsonParser();
        JsonObject jsonObj = (JsonObject) parser.parse(jsonStr);

        String one = jsonObj.get("one").getAsString();
        System.out.println(one);// one

        JsonArray twoObjArray = jsonObj.get("two").getAsJsonArray();
        System.out.println(twoObjArray);// [{"two_1_1":2.11,"two_1_2":2.12},{"two_2_1":"2.21"}]
        JsonObject twoObj = (JsonObject) twoObjArray.get(0);
        String two = twoObj.get("two_1_1").getAsString();// 可以当成string处理
        System.out.println(two);// 2.11

        JsonArray threeArray = jsonObj.get("three").getAsJsonArray();
        String three_1 = threeArray.get(0).getAsString();
        boolean three_2 = threeArray.get(1).getAsBoolean();
        System.out.println(three_1 + three_2);// abcfalse

        JsonObject fourObj = jsonObj.get("four").getAsJsonObject();
        double four_1 = fourObj.get("four_1").getAsDouble();
        System.out.println(four_1);// 4.1
    }

    // fastjson读取处理json
    public static void jsonAlibaba(String jsonStr)
    {
        JSONObject jsonObj = JSON.parseObject(jsonStr);

        String one = jsonObj.getString("one");
        System.out.println(one);// one

        JSONArray twoObjArray = jsonObj.getJSONArray("two");
        System.out.println(twoObjArray);// [{"two_1_1":2.11,"two_1_2":2.12},{"two_2_1":"2.21"}]
        JSONObject twoObj = twoObjArray.getJSONObject(1);
        String two_2 = twoObj.getString("two_2_1");
        System.out.println(two_2);// 2.21

        JSONArray threeArray = jsonObj.getJSONArray("three");
        String three_1 = threeArray.getString(0);
        boolean three_2 = threeArray.getBoolean(1);
        System.out.println(three_1 + three_2);// abcfalse

        JSONObject fourObj = jsonObj.getJSONObject("four");
        String four_1 = fourObj.getString("four_1");
        System.out.println(four_1);// 4.1
    }
}

  

2、写json

public class Person
{
    private String name;
    private int age;
    private double salary;
    private boolean hasBaby;
    private List<String> babyNames;
    // setter/getter/toString等
}

 

public class WriteJSON
{
    public static void main(String[] args)
    {
        writeJsonGoogle();
        writeJsonAlibaba();
    }

    // gson写json
    public static void writeJsonGoogle()
    {
        JsonObject jsonObj = new JsonObject();

        jsonObj.addProperty("one", "oneStr");
        jsonObj.addProperty("two", false);

        JsonObject threeObj = new JsonObject();
        threeObj.addProperty("three", 3);
        jsonObj.add("three", threeObj);

        JsonArray jsonArray = new JsonArray();
        JsonObject four_1 = new JsonObject();
        four_1.addProperty("four_1", 4.1);
        JsonObject four_2 = new JsonObject();
        four_2.addProperty("four_2", true);
        jsonArray.add(four_1);
        jsonArray.add(four_2);
        jsonObj.add("four", jsonArray);

        System.out.println(jsonObj.toString());
        // {"one":"oneStr","two":false,"three":{"three":3},"four":[{"four_1":4.1},{"four_2":true}]}
    }

    // fastjson写json
    public static void writeJsonAlibaba()
    {
        Map<String, Object> jsonMap = new TreeMap<String, Object>();
        jsonMap.put("one", "oneStr");
        jsonMap.put("two", false);

        Map<String, Object> threeObj = new HashMap<String, Object>();
        threeObj.put("three_1", "3.1");
        threeObj.put("three_2", 3.2);
        jsonMap.put("three", threeObj);

        JSONObject jsonObj = new JSONObject(jsonMap);
        List<String> babynames = new ArrayList<String>();
        babynames.add("abc");
        babynames.add("def");
        Person person = new Person("gusi", 12, 7000.00, true, babynames);
        jsonObj.put("four", person);

        jsonObj.put("five", 5);

        System.out.println(jsonObj.toJSONString());
        // {"five":5,"four":{"age":12,"babyNames":["abc","def"],"hasBaby":true,"name":"gusi","salary":7000},"one":"oneStr","three":{"three_1":"3.1","three_2":3.2},"two":false}
    }
}

 

3、对象类型和json的常用转换(包括gson和fastjson)

基础Object

public class Demo implements Serializable
{
    String name;
    int age;
    boolean man;

    public Demo()
    {
        super();
    }

    public Demo(String name, int age, boolean man)
    {
        super();
        this.name = name;
        this.age = age;
        this.man = man;
    }

    // setter/getter,千万不能忘了,不然fastjson不能设置值
    @Override
    public String toString()
    {
        return "Demo [name=" + name + ", age=" + age + ", man=" + man + "]";
    }

}

处理方式

//gson
Demo demo1 = new Demo("a", 1, false);
String json1 = new Gson().toJson(demo1);// JavaBean到String
System.out.println(json1);
Demo demo2 = new Gson().fromJson(json1, Demo.class);// String到JavaBean
System.out.println(demo2);
JsonObject jsonObj1 = (JsonObject) new JsonParser().parse(json1);// String到jsonObject
System.out.println(jsonObj1);
String json2 = jsonObj1.toString();// jsonObject到String
System.out.println(json2);

//fastjson
Demo demo3 = new Demo("b", 2, true);
String json3 = JSON.toJSONString(demo3);// JavaBean到String
System.out.println(json3);
Demo demo4 = JSON.parseObject(json3, Demo.class);// String到JavaBean
System.out.println(demo4);
JSONObject jsonObj2 = JSON.parseObject(json3);// String到jsonObject
System.out.println(jsonObj2);
String json4 = jsonObj2.toJSONString();// jsonObject到String
System.out.println(json4);
JSONObject jsonObj3 = (JSONObject) JSON.toJSON(demo3);// JavaBean到jsonObject
System.out.println(jsonObj3);

通过上面的方法,基本上就能处理绝大部分的json.

 

1
3
分享到:
评论

相关推荐

    java处理JSON数据

    总结,Java处理JSON数据涉及多个库,如Jackson、Gson和org.json,它们提供了不同的API来解析、创建、遍历和序列化/反序列化JSON。理解这些库的使用方式对于任何Java开发者来说都是至关重要的,特别是在处理Web服务和...

    java处理json数据格式的jar包

    java处理json数据格式的jar包,json-lib-2.3-jdk15.jar,ezmorph-1.0.6.jar,commons-logging-1.0.4.jar,commons-lang.jarcommons-collections-3.1.jar,commons-beanutils-1.7.0.jar

    java处理JSON格式数据的通用类

    【Java处理JSON格式数据的通用类】是一种在Java中处理JSON数据的标准方法,它能够方便地接收和返回JSON数据,解决开发过程中与JSON交互的问题。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛...

    java处理JSON格式数据的通用类.pdf

    Java 处理 JSON 格式数据的通用类 Java 处理 JSON 格式数据的通用类是 Java 语言中处理 JSON 格式数据的常用方法。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它具有易于人阅读和编写、易于...

    java处理json格式需要的包

    Java处理JSON(JavaScript Object Notation)格式的数据时,通常会依赖一些第三方库,其中`json-lib.jar`是一个常用的工具包。这个库提供了丰富的API,使得Java开发者能够方便地进行JSON对象的序列化与反序列化操作...

    java处理JSON格式数据的通用类.docx

    Java 处理 JSON 格式数据的通用类 在 Java 开发中,处理 JSON 格式数据是非常常见的操作。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。Java 提供...

    java处理JSON

    Java处理JSON是编程中常见的任务,特别是在Web服务和前后端交互中。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Java中,处理JSON主要依赖于第...

    一个java处理JSON格式数据的通用类.pdf

    ### Java处理JSON格式数据的通用类详解 #### 概述 在现代软件开发过程中,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式被广泛采用。它基于JavaScript的一个子集,采用完全独立于编程语言的...

    org.json java处理json数据

    当涉及到在Java中处理JSON数据时,`org.json`库是一个广泛使用的开源工具包。这个库提供了一系列的类和方法,帮助开发者方便地操作JSON对象。 `org.json`库主要包含以下核心类: 1. **JSONObject**:这个类代表一...

    java处理json对象

    JSON-Lib是一个Java库,它提供了处理JSON对象的方法,使得Java开发者能够方便地进行JSON数据的序列化和反序列化。下面将详细介绍如何使用JSON-Lib在Java中处理JSON对象。 首先,为了使用JSON-Lib,你需要将它添加到...

    Java处理json字符串

    json是一个轻量级数据交换格式,很容易被人们读写,很容易被机器解析和生成。它建立在js的一个子集之上,json是一个文本格式,它独立于具体的语言,但是使用了和c类似的...包括c、c++、c#、java、js、perl、perl、等。

    Java中 json处理的所用到的所有Jar包

    总结一下,这些Jar包在Java处理JSON时扮演了重要角色: 1. `commons-collections`:提供集合操作工具,辅助数据处理。 2. `commons-lang`:提供语言级别的扩展,如字符串和日期处理。 3. `commons-beanutils`:简化...

    java使用json的必备7个jar包

    在java中使用json需要引入以下六个jar包,分别为: commons-lang-2.4.jar commons-collections-3.2.1.jar commons-beanutils-1.8.3.jar json-lib-2.4-jdk15.jar ezmorph-1.0.6.jar commons-logging-1.1.3.jar ...

    java解析json文件Jar包

    7. **org.apache.commons.lang3**: 这个库可能包含了一些通用的Java工具类,虽然不是直接用于JSON处理,但在处理JSON时可能会用到,比如字符串操作、类型转换等。 在Java工程中引入这些Jar包后,开发者可以轻松地在...

    java处理json数据用到的包

    java后台处理json数据需要用到的包,包括commons-beanutils-1.7.0.jar,commons-collections-3.2.1.jar,commons-httpclient-3.1.jar,commons-lang-2.3.jar,commons-logging-1.1.1.jar,ezmorph-1.0.3.jar,json-...

    java操作JSON的例子

    运行文件`Main.java`位于`根目录JavaSocket文件夹src下`,这表明`Main.java`是程序的入口点,我们可以在这里找到如何使用Java处理JSON的代码。`Main.java`的代码可能包含如下关键部分: 1. 导入`org.json`库: ```...

    javajson.zip

    `javajson.zip`这个压缩包可能包含的是与Java处理JSON相关的类库或者示例代码。虽然没有具体文件内容,但我们可以根据常见场景来分析其中可能涵盖的知识点。 1. **JSON基本结构**:JSON由对象和数组构成,对象是...

    JAVA-JSON工具转换类

    在JAVA开发中,处理JSON数据通常需要借助特定的库来完成,如本话题中提到的`json-lib`和`ezmorph`。 `json-lib`是一个Java语言实现的JSON库,它提供了多种数据类型到JSON的转换,包括JavaBean、Map、List、数组等。...

Global site tag (gtag.js) - Google Analytics