我有一个使用默认值初始化的模型对象。要刷新对象的内容,我调用Web服务并获取响应并从json对象获取内容。 我想检查如果json响应包含对象。如果是,则调用setter并设置数据,如果没有,则离开然后不设置。我的对象中有大约300个字段。我如何用更少的代码来做到这一点。我列出了我目前的方法。
我的模型对象就像
public class MyObject {
private String str1 = "Initial Value1";
private String str2 = "Initial Value2";
public void setStr1(String str1)
{
this.str1 = str1;
}
public void setStr2(String str2)
{
this.str2 = str2;
}
public String getStr1(){
return str1;
}
public String getStr2(){
return str2;
}
}
我的json回复就像
{
"val_one":"New Value1",
"val_two":"New_value2"
}
现在在运行时我需要设置json response
的值 MyObject myObject = new MyObject();
if(jsonObject.has("val_one"));
myObject.setStr1(jsonObject.get("val_one"));
if(jsonObject.has("val_two"));
myObject.setStr2(jsonObject.get("val_two"));
现在如何以更好,更有效的方式做到这一点
答案 0 :(得分:2)
如果双方都在使用JAVA那么为什么不使用json-io。您可以正常创建对象。即
Animal a = new Aminmal() andimal.setName("bob");
然后使用json-io将它变成json - stream到它需要的地方...使用json io改回对象
这可以使用
完成JsonWriter.objectToJson(Object o);
JsonReader.jsonToJava(String json);
https://code.google.com/p/json-io/
json-io也比我用过的大多数其他第三方json图书馆都重量轻且速度快。
如果您想要对输出进行更多控制,即日期转换等,那就说了。然后看看GSON。
答案 1 :(得分:1)
除了其他建议之外,另一个选择是gson。这是gson信息的链接。
基本上gson的想法是你定义一个对象来表示你正在接收的JSON结构。有点像现在的情况,你只需要更改对象属性以匹配JSON字段的名称,即'val_one'和'val_two'。
然后你只需要使用gson从JSON文本创建对象,例如:
Gson gson = new GsonBuilder().create();
MyObject json = gson.fromJson(jsonStr, MyObject.class);
答案 2 :(得分:0)
为什么要自己拍摄对象模型?如果你拿春天,那么你可以使用杰克逊映射器,并为你完成所有这些。 如果您不想使用spring,那么您仍然可以使用jackson2并让它处理解析: http://wiki.fasterxml.com/JacksonRelease20