zoukankan      html  css  js  c++  java
  • java json的处理

    maven依赖

    <dependencies>
            <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.5</version>
    </dependency>
        </dependencies>

    读取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
        }
    }

    写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}
        }
    }

    对象类型和json的常用转换

    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);
  • 相关阅读:
    [BJOI2006]狼抓兔子
    [HNOI2016]最小公倍数
    hihocoder 1419 重复旋律4
    [NOI2015]品酒大会
    [SDOI2016]生成魔咒
    [ZJOI2009]狼和羊的故事
    BZOJ4361 isn
    [SDOI2009]虔诚的墓主人
    BZOJ 3329 Xorequ
    [ZJOI2013]丽洁体
  • 原文地址:https://www.cnblogs.com/tuifeideyouran/p/4483110.html
Copyright © 2011-2022 走看看