2013-03-07 93 views
9

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

我有一个代码,像

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

我想从JSONArray带到一个位置类对象的JSONObject转换。我只是想知道是否有一个函数直接执行它。

对不起,如果我以错误的方式构思了问题。由于我没有直接的功能,所以我这样做了。

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

对不起,这个愚蠢的问题。

回答

16

Here's a tutorial GSON - 我认为这应该有助于加强你的理解。本质上分析是做这样的:

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

它应该是“新的JsonParser()。解析(...)”..花了几分钟试图找出问题是什么 – Matteo 2016-04-27 18:18:38

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

,如果你仍然想使用org.json.JSONObject

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