26

我需要为我的 android 项目使用 gson 库将 JSONObject 转换为 Location 对象。我不确定如何做到这一点。谁能帮我这个。提前致谢。

我有一个类似的代码

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

我想将从 JSONArray 获取的 JSONObject 转换为 Location 类对象。我只是想知道是否有直接执行此操作的函数。

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

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

对不起这个愚蠢的问题。

4

5 回答 5

49

这是GSON的教程- 我认为它应该有助于加深您的理解。本质上,解析是这样完成的:

String mJsonString = "...";
JsonParser parser = new JsonParser(); 
JsonElement mJson =  parser.parse(mJsonString);
Gson gson = new Gson();
MyDataObject object = gson.fromJson(mJson, MyDataObject.class);
于 2013-03-07T21:40:45.820 回答
11

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

org.json.JSONObject o;
ObjectMapper m = new ObjectMapper();
MyClass myClass = m.readValue(o.toString(), MyClass.class);
于 2017-02-07T03:05:15.700 回答
3

使用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);
于 2013-05-20T05:43:11.513 回答
1

对于科特林

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

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

或者

 val objectResponse = Gson().fromJson(Gson().toJson(resp), MyClass::class.java)
于 2020-02-17T09:39:54.780 回答
1

将 JSONObject 转换为模型类::

val jsonObject = JSONObject(data[0].toString())
val jsonModel = jsonObject.getJSONObject(KEY.message).toString()
val chatModel = Gson().fromJson(model, ChatModel::class.java))
于 2021-08-19T11:01:41.257 回答