使用LibGDX库手动编写Json字符串

时间:2016-05-21 09:09:43

标签: json gwt libgdx

LibGDX实现了JSON读者和编写者。 这允许您为GWT编译(org.json.JSONobject没有GWT实现)。 很好的序列化对象和从Json字符串实例化对象。 就我而言,我想在不从对象/类开始的情况下生成JSON。

阅读了文档(https://github.com/libgdx/libgdx/wiki/Reading-&-writing-JSON)后,我找不到一个好的例子,我努力工作一点点。所以我在这里发布了我最终如何完成它(也许有更好,更清晰的方法来实现相同的结果)。

1 个答案:

答案 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);'它将默认使用最小注释(例如,它不会在你的字符串周围使用双引号,这导致我在代码的其他部分出现一些问题)。