繁体   English   中英

JsonObject正在将String转换为JsonArray

[英]JsonObject is converting String to JsonArray

为什么要将测试元素更改为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时,测试属性是JsonArray。 我如何强制它保持字符串形式? 谢谢!

Google告诉我,这是Groovy的JsonBuilder一个非常普遍的问题。 如果您不能更改数据结构,我建议改用gson ,它可以使您更好地控制数据的序列化和反序列化。

如果您可以更改数据结构,建议将您在Map中粘贴的所有内容捆绑到域对象中。 这样, JsonBuilder将具有数据类型来提供提示。 我不是100%肯定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();

您可能会有更好的运气。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM