如何将JSONObject转换为类对象?

时间:2013-03-07 21:32:55

标签: android gson

我需要使用gson库将JSONObject转换为Location对象,用于我的android项目。我不知道该怎么做。谁能帮我这个。提前谢谢。

我的代码类似于

JSONArray input = new JSONArray(extras.getString("loc_json"));

我想将从JSONArray中获取的JSONObject转换为Location类对象。我只是想知道是否有一个函数可以直接执行它。

如果我以错误的方式提出问题,请原谅我。由于我没有直接功能,我是这样做的。

 loc_temp = (Location) gson.fromJson(input.getJSONObject(i).toString(), Location.class);;

抱歉这个愚蠢的问题。

5 个答案:

答案 0 :(得分:30)

GSON的{p> Here's a tutorial - 我认为它应该有助于加强您的理解。基本上解析是这样完成的:

String mJsonString = "...";
JsonParser parser = new JsonParser(); 
JsonElement mJson =  parser.parse(mJsonString);
Gson gson = new Gson();
MyDataObject object = gson.fromJson(mJson, MyDataObject.class);

答案 1 :(得分:5)

如果您仍想使用 org.json.JSONObject

org.json.JSONObject o;
ObjectMapper m = new ObjectMapper();
MyClass myClass = m.readValue(o.toString(), MyClass.class);

答案 2 :(得分:2)

使用 com.google.gson.JsonObject& JsonArray 而不是org.json。*

像这样:

Gson gson = new Gson();
Type typeOfT = new TypeToken<List<Location.class>>(){}.getType();
JsonParser parser = new JsonParser();
JsonObject jo = (JsonObject) parser.parse(jsonStr);
JsonArray ja = jo.getAsJsonArray("memberName");
list = gson.fromJson(ja, typeOfT);

答案 3 :(得分:1)

对于Kotlin

 val objType = object : TypeToken<MyClass>() {

    }.getType()
    var myclassObj = gson.fromJson(value,objType) 

 val objectResponse = Gson().fromJson(Gson().toJson(resp), MyClass::class.java)

答案 4 :(得分:0)

您可以使用moshi!当JSON到Object时,moshi非常棒!特别是如果您在向服务器请求时得到jsonObject(这非常容易转换为每个对象)

更多错误修复和更干净! Moshi内置了对读写Java核心数据类型的支持:

  • 原语(int,float,char ...)及其对应的框(整数,float,character ...)
  • 数组,集合,列表,集合和 映射字符串枚举

Moshi