LibGDX实现了JSON读者和编写者。 这允许您为GWT编译(org.json.JSONobject没有GWT实现)。 很好的序列化对象和从Json字符串实例化对象。 就我而言,我想在不从对象/类开始的情况下生成JSON。
阅读了文档(https://github.com/libgdx/libgdx/wiki/Reading-&-writing-JSON)后,我找不到一个好的例子,我努力工作一点点。所以我在这里发布了我最终如何完成它(也许有更好,更清晰的方法来实现相同的结果)。
答案 0 :(得分:1)
所以要使用LibGDX Json库手动生成一个看起来像这样的JSON字符串:
{
"name":"BOB",
"surname":"DAVID",
"phones":[
{
"mobile":,"xxx-x-x"
},
{
"landline":,"xxx-x-x"
}
]
}
你可以使用我为了说明目的而愚蠢的那种代码:
public String harcodedLIBGDXJSON(){
Json jsonObject = new Json();
StringWriter jsonText = new StringWriter();
JsonWriter writer = new JsonWriter(jsonText);
jsonObject.setOutputType(JsonWriter.OutputType.json);
jsonObject.setWriter(writer);
jsonObject.writeObjectStart();
jsonObject.writeValue("name", "BOB");
jsonObject.writeValue("surname","DAVID");
jsonObject.writeArrayStart("phones");
{
Json aPhoneNumber = new Json();
aPhoneNumber.setOutputType(JsonWriter.OutputType.json);
aPhoneNumber.setWriter(writer);
aPhoneNumber.writeObjectStart();
aPhoneNumber.writeValue("mobile", 'xxx-x-x');
aPhoneNumber.writeObjectEnd();
Json aPhoneNumber = new Json();
aPhoneNumber.setOutputType(JsonWriter.OutputType.json);
aPhoneNumber.setWriter(writer);
aPhoneNumber.writeObjectStart();
aPhoneNumber.writeValue("landline", 'xxx-x-x');
aPhoneNumber.writeObjectEnd();
}
}
jsonObject.writeArrayEnd();
jsonObject.writeObjectEnd();
return jsonObject.getWriter().getWriter().toString();
}
注意:如果你不使用'object.setOutputType(JsonWriter.OutputType.json);'它将默认使用最小注释(例如,它不会在你的字符串周围使用双引号,这导致我在代码的其他部分出现一些问题)。