为什么这会将测试元素更改为JSONArray,如何阻止它?
import net.sf.json.JSONArray
import net.sf.json.JSONObject
HashMap<String,Object> stuff = new HashMap<String,Object>()
stuff.put("name","alex")
stuff.put("age","21")
stuff.put("consent",true)
stuff.put("test",'[1,2,true]')
JsonBuilder a = new JsonBuilder(stuff)
JSONObject b = a.getContent()
但是,当我看到b时,test属性是一个JsonArray。如何强制它保持字符串?谢谢!
答案 0 :(得分:0)
JsonBuilder
的一个相当常见的问题。如果您无法更改数据结构,我建议您使用gson,这样可以更好地控制数据的序列化和反序列化。
如果您可以更改数据结构,我建议将您在Map
中粘贴的所有内容捆绑到域对象中。那样JsonBuilder
将有数据类型给它提示。我不是百分百肯定JsonBuilder
会做正确的事情,但如果它不必猜测数据类型,它就更有可能。
如果您有类似这样的简化示例
class Person {
String name;
int age;
boolean consent;
String test;
public Person(String name, int age, boolean consent, String test) {
...
}
}
Person person = new Person("alex", 21, true, "[1,2,true]");
JsonBuilder a = new JsonBuilder(person);
JSONObject b = a.getContent();
你可能会有更好的运气。