使用gson和GsonBuilder()解析JSON

5
String jsons = "{'appname':'application', 'Version':'0.1.0', 'UUID':'300V', 'WWXY':'310W', 'ABCD':'270B', 'YUDE':'280T'}";

这是我的JSON字符串。我该如何解析它以便在GsonBuilder()中获得对象?我尝试了几种方法,但都不起作用。
我还阅读了https://sites.google.com/site/gson/gson-user-guide。
2个回答

19
public class YourObject {
   private String appname;
   private String Version;
   private String UUID;
   private String WWXY;
   private String ABCD;
   private String YUDE;
   //getters/setters

}  

解析为对象

YourObject parsed = new Gson().fromJson(jsons, YourObject.class);  

YourObject parsed = new GsonBuilder().create().fromJson(jsons, YourObject.class);  

小测试

String jsons = "{'appname':'application', 'Version':'0.1.0', 'UUID':'300V', 'WWXY':'310W', 'ABCD':'270B', 'YUDE':'280T'}";
YourObject parsed = new Gson().fromJson(jsons, YourObject.class);  

运行良好

编辑
在这种情况下使用 JsonParser

JsonObject object = new JsonParser().parse(jsons).getAsJsonObject();
object.get("appname"); // application 
object.get("Version"); // 0.1.0

没有新类怎么样?我不需要新类。 - senzacionale
@Ilya,能否将输出作为ArrayList而不是YourObject呢?请查看http://stackoverflow.com/questions/30163699/google-map-direction-api-using-retrofit.... 我需要将retrofit的输出作为ArrayList<LatLng>。 - zacharia
节省了我数天的重新编码。 - Shadab K

3

JSON使用双引号("),而不是单引号,用于字符串,因此你的JSON无效。这可能是将其转换为对象时出现问题的原因。


所以我需要检查 JSON 字符串是否有效。使用 try catch 足够吗? - senzacionale
@senzacionale 这取决于您是否传递无效的 JSON 时会抛出异常;我认为它会,因此使用 try-catch 块应该就足够了。 - Anthony Grist

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接