接收JSON并将其转换为对象的最佳实践

时间:2014-03-10 08:39:39

标签: java android json json.net

我在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转换为对象的标准/最佳方法是什么?

3 个答案:

答案 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等。