0

问题遭遇

  1. org.json:空值丢失
  2. org.json.simple:Object[] 解析不正确

预期结果:

[null,true,123,123.456,"","123asd'\"/\",[null],[true],[123],[123.456],[""],["123asd'\"/\"] ,[null],[true],[123],[123.456],[""],["123asd'\"/\"],{"0":null},{"0":true},{ "0":123},{"0":123.456},{"0":""},{"0":"123asd'\"/\"}]

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

[null,true,123,123.456,"","123asd'\"/\",[null],[true],[123],[123.456],[""],["123asd'\"/\"] ,[null],[true],[123],[123.456],[""],["123asd'\"/\"],{},{"0":true},{"0":123 },{"0":123.456},{"0":""},{"0":"123asd'\"/\"}]

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

[null,true,123,123.456,"","123asd'\"/\", [Ljava.lang.Object;@20ad9418,[Ljava.lang.Object;@31cefde0,[Ljava.lang.Object;@439f5b3d,[ Ljava.lang.Object;@1d56ce6a,[Ljava.lang.Object;@5197848c,[Ljava.lang.Object;@17f052a3 ,[null],[true],[123],[123.456],[""], ["123asd'\"/\"],{"0":null},{"0":true},{"0":123},{"0":123.456},{"0":"" },{"0":"123asd'\"/\"}]

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);
    }

}
4

1 回答 1

0

这两个库的功能很差。他们为简单的案例做这项工作。

您的测试只是确定了org.json不会序列化Map值所在的条目null并且org.json.simple没有数组类型的特殊情况(因此默认为其toString()方法返回值)。

于 2014-11-12T02:36:21.653 回答