我需要使用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);;
抱歉这个愚蠢的问题。
答案 0 :(得分:30)
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核心数据类型的支持: