json-lib
json-lib copied to clipboard
Strings that are also valid JSON arrays/objects are deserialized incorrectly
This occurs when the string is nested and more than one level deep, e.g it occurs for {"a": {"b": "[c-d]"}} but not {"b": "[c-d]"}
I'd expect the string "{"a": {"b": "[c-d]"}}" to be deserialized to: { "a" : { "b" : "[c-d]" } }
It's actually deserialized to: { "a" : { "b" : ["c-d"] } }
Here's a test for this that currently fails:
public void testElement_Object_nested() {
JSONObject jsonObject1 = new JSONObject();
jsonObject1.element( "str", "\"[]\"" );
Assertions.assertTrue(jsonObject1.get( "str" ) instanceof String); // This assertion passes
JSONObject jsonObject2 = new JSONObject();
jsonObject2.element( "obj", jsonObject1);
Assertions.assertTrue(jsonObject2.getJSONObject( "obj" ).get( "str" ) instanceof String); // This assertion fails
}
I'm running version 2.4.