JsonObject正在将String转换为JsonArray

时间:2014-04-01 14:40:07

标签: java json groovy

为什么这会将测试元素更改为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。如何强制它保持字符串?谢谢!

1 个答案:

答案 0 :(得分:0)

谷歌告诉我,这是Groovy 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();

你可能会有更好的运气。