Issue encounter
- org.json: null value is missing
- org.json.simple: Object[] doesn't parse correctly
Expected Result:
[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'\"/\"}]
Actual Result for org.json: null value is missing
[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'\"/\"}]
Actual Result for org.json.sample: Object[] is not display correctly
[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);
}
}
These two libraries are very feature poor. They do the job for simple cases.
Your test has simply identified that
org.json
doesn't serializeMap
entries where the value isnull
andorg.json.simple
doesn't have a special case for array types (and therefore defaults to theirtoString()
method return value).