json

常用json解析工具类

1.net.sf.json

               如果对象中包含对象 不能一次把json字符串 转成对象,要一次一次转

        User user = new User("bob",12);
        User user1 = new User(null,null);
        List<User> list = new ArrayList<>();
        list.add(user1);
        list.add(user);
        
        System.out.println(JSONObject.fromObject(user1));
        
        JSONArray jsonArray = JSONArray.fromObject(list);
        System.out.println(jsonArray.toString());
        
        Map<String, String> map = new HashMap<>();
        map.put("data", null);
        System.out.println(JSONObject.fromObject(map));

输出:
{"age":0,"name":""}
[{"age":0,"name":""},{"age":12,"name":"bob"}]
{"data":null}


2.com.fasterxml.jackson
官网
https://github.com/FasterXML/jackson-databind/

User user = new User("bob",12);
        User user1 = new User(null,null);
        List<User> list = new ArrayList<>();
        list.add(user1);
        list.add(user);
        
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(list));
            System.out.println(jsonNode.toString());
            
            Map<String, String> map = new HashMap<>();
            map.put("data", null);
            System.out.println(objectMapper.writeValueAsString(map));
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }    
    }


3 FastJson
JSONObject result = new JSONObject();
result.put("data", HelloUcfPO);
result.toJSONString();

Student student = JSON.parseObject(JSON_OBJ_STR, new TypeReference<Student>() {});

ArrayList<Student> students = JSON.parseObject(JSON_ARRAY_STR, new TypeReference<ArrayList<Student>>() {});
JSONObject.toJSONString(HelloUcfPO)

//json 转对象
        //HelloUcfPO po = JSONObject.parseObject(data,HelloUcfPO.class);
        //json 转list
        //List<HelloUcfPO> list = JSON.parseArray(jsonObject.toString(), HelloUcfPO.class);
//JSON字符串反序列化API


    // 将JSON字符串反序列化为JavaBean
    public static <T> T parseObject(String jsonStr, 
                                    Class<T> clazz, 
                                    Feature... features);

    // 将JSON字符串反序列化为JavaBean
    public static <T> T parseObject(byte[] jsonBytes,  // UTF-8格式的JSON字符串
                                    Class<T> clazz, 
                                    Feature... features);

    // 将JSON字符串反序列化为泛型类型的JavaBean
    public static <T> T parseObject(String text, 
                                    TypeReference<T> type, 
                                    Feature... features);

    // 将JSON字符串反序列为JSONObject
    public static JSONObject parseObject(String text);

序列化API


    // 将Java对象序列化为JSON字符串,支持各种各种Java基本类型和JavaBean
    public static String toJSONString(Object object, SerializerFeature... features);

    // 将Java对象序列化为JSON字符串,返回JSON字符串的utf-8 bytes
    public static byte[] toJSONBytes(Object object, SerializerFeature... features);

    // 将Java对象序列化为JSON字符串,写入到Writer中
    public static void writeJSONString(Writer writer,
                                       Object object,
                                       SerializerFeature... features);

    // 将Java对象序列化为JSON字符串,按UTF-8编码写入到OutputStream中
    public static final int writeJSONString(OutputStream os,
                                            Object object,
                                            SerializerFeature... features);

更多参考features
https://www.jianshu.com/p/eaeaa5dce258






原文地址:https://www.cnblogs.com/jentary/p/10648870.html