zoukankan      html  css  js  c++  java
  • 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






  • 相关阅读:
    Createjs学习心得之使用EaselJs实现拖拽效果
    学习笔记——复杂的窗口分帧
    cordova 插件开发
    wcf rest 服务用于安卓和ISO调用5-------验证
    wcf rest 服务用于安卓和ISO调用4-------多文件上传
    wcf rest 服务用于安卓和ISO调用3-------soap与rest共用
    wcf rest 服务用于安卓和ISO调用2-------文件上传
    wcf rest 服务用于安卓和ISO调用1
    RecycleView 瀑布流滑动移位
    RecycleView 滑动到底部,加载更多
  • 原文地址:https://www.cnblogs.com/jentary/p/10648870.html
Copyright © 2011-2022 走看看