我在java中收到一个JSON字符串,我希望将其转换为表示字符串的对象。 我目前有这个功能:
private ArrayList<MyDevice> parseResposne(String response) {
ArrayList<MyDevice> devices = null;
JSONArray jsnArr = null;
try {
// JSONObject jObj = new JSONObject(response);
jsnArr = new JSONArray(response);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for (int i = 0; i < jsnArr.length(); i++) {
MyDevice tmpDevice = new MyDevice(jsnArr.);
// devices.add(tmpDevice);
}
return null;
}
这是我的Mydevice课程:
public class MyDevice {
public String name;
public int deviceId;
public String serialNo;
public String deviceType;
public boolean enabled;
public MyDevice(int deviceId, String name, String serialNo, String deviceType, boolean enabled) {
this.deviceId = deviceId;
this.name = name;
this.serialNo = serialNo;
this.deviceType = deviceType;
this.enabled = enabled;
}
}
有没有更简单的方法,例如模型绑定器在asp.net mvc?
将json转换为对象的标准/最佳方法是什么?
答案 0 :(得分:4)
您可以使用Google的Gson库轻松将json转换为Object,反之亦然。
Gson gson = new Gson();
ArrayList<MyDevice> yourArray = gson.fromJson(jsonString, new TypeToken<List<MyDevice>>(){}.getType());
public class MyDevice {
public String name;
public int deviceId;
public String serialNo;
public String deviceType;
public boolean enabled;
//Setters and Getters
}
答案 1 :(得分:2)
如果您有复杂的json或大量数据,最好使用Gson来映射数据和模型类。例如:
Gson gson = new Gson();
ModelClass modelClass= new ModelClass();
modelClass= gson.fromJson(responseContent,ModelClass.class);
//where responseContent is your jsonString
Log.i("Web service response", ""+modelClass.toString());
https://code.google.com/p/google-gson/
对于命名差异(根据webservice中的变量),可以使用注释等
@SerializedName
。 (所以不需要使用Serializable
)
答案 2 :(得分:0)
您可以查看流式传输解析器,例如GSON / Jackson等。