org.json & org.json.simple 的意外 json 结果



问题遇到

  1. org.json:缺少null值
  2. org.json.simple:Object[]解析不正确

预期结果:

[null,true,123123.456,","123asd'\"/\",[null],[true],[123],[123.456],["],["123asd'\"/\"],[null],[true],[123],[123.456/,["],[\"/\"}]

org.json的实际结果:缺少空值

[null,true,123123.456,","123asd'\"/\",[null],[true],[123],[123.456],["],["123asd'\"/\"],[null],[true],[123],[123.456/,["],[}]

org.json.sample的实际结果:Object[]未正确显示

[null,true,123123.456,","123asd'\"/\",[Ljava.lang.Object;@20d9418,[Ljava.lang.Object;@31cefde0,[Ljava.lang.Object,@439f5b3d,[Ljava.ang.Object"],{"0":null},{"0":true},}"0":123},"0":123.456},《》

import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import org.json.JSONArray;
import org.json.simple.JSONValue;
public class Main {
    public static void main(String[] args) {
        Map map = new LinkedHashMap();
        map.put(map.size(), null);
        map.put(map.size(), true);
        map.put(map.size(), 123);
        map.put(map.size(), 123.0);
        map.put(map.size(), 123.456);
        map.put(map.size(), "");
        map.put(map.size(), "123asd'"/\");
        map.put(map.size(), new Object[]{null});
        map.put(map.size(), new Object[]{true});
        map.put(map.size(), new Object[]{123});
        map.put(map.size(), new Object[]{123.0});
        map.put(map.size(), new Object[]{123.456});
        map.put(map.size(), new Object[]{""});
        map.put(map.size(), new Object[]{"123asd'"/\"});
        List list_temp = new LinkedList();
        list_temp.add(null);
        map.put(map.size(), list_temp);
        list_temp = new LinkedList();
        list_temp.add(true);
        map.put(map.size(), list_temp);
        list_temp = new LinkedList();
        list_temp.add(123);
        map.put(map.size(), list_temp);
        list_temp = new LinkedList();
        list_temp.add(123.0);
        map.put(map.size(), list_temp);
        list_temp = new LinkedList();
        list_temp.add(123.456);
        map.put(map.size(), list_temp);
        list_temp = new LinkedList();
        list_temp.add("");
        map.put(map.size(), list_temp);
        list_temp = new LinkedList();
        list_temp.add("123asd'"/\");
        map.put(map.size(), list_temp);
        Map map_temp = new LinkedHashMap();
        map_temp.put(map_temp.size(), null);
        map.put(map.size(), map_temp);
        map_temp = new LinkedHashMap();
        map_temp.put(map_temp.size(), true);
        map.put(map.size(), map_temp);
        map_temp = new LinkedHashMap();
        map_temp.put(map_temp.size(), 123);
        map.put(map.size(), map_temp);
        map_temp = new LinkedHashMap();
        map_temp.put(map_temp.size(), 123.0);
        map.put(map.size(), map_temp);
        map_temp = new LinkedHashMap();
        map_temp.put(map_temp.size(), 123.456);
        map.put(map.size(), map_temp);
        map_temp = new LinkedHashMap();
        map_temp.put(map_temp.size(), "");
        map.put(map.size(), map_temp);
        map_temp = new LinkedHashMap();
        map_temp.put(map_temp.size(), "123asd'"/\");
        map.put(map.size(), map_temp);
        List list = new LinkedList(map.values());
        //println(new JSONObject(map).toString());
        //println(JSONValue.toJSONString(map));
        println(new JSONArray(list).toString());
        println(JSONValue.toJSONString(list));
    }
    public static <T> void println(T p_t) {
        System.out.println(p_t);
    }
}

这两个库的功能非常差。他们为简单的案件做这项工作。

您的测试只是确定org.json不序列化值为nullMap条目,而org.json.simple对数组类型没有特殊情况(因此默认为其toString()方法返回值)。

最新更新