【发布时间】:2013-09-13 07:31:33
【问题描述】:
我收到来自 Web 服务调用的以下 json 响应。 正如你所看到的,我们将得到什么类型的值作为响应也来自类型对象。
{"settings":[
{
"name":"name1",
"value":4,
"type":"int"
},
{
"name":"name2",
"value":false,
"type":"boolean"
},
{
"name":"name3",
"type":"array",
"value":[
{
"name":"name3"
}]}]}
- 如何解析这个 json?
- 如何将解析值存储在数据库中,其中我有一个包含列名称、值等的表?
编辑:
目前我正在将所有值转换为字符串,因为我们无法将布尔值添加到数据库。
private enum Type{
INT("int"), BOOLEAN("boolean"), ARRAY("array"),UNKNOWN_TYPE("");
private String mType;
Type(String type){
mType = type;
}
public static Type toEnum(String type){
for (Type value: Type.values()){
if(value.mType.equals(type)){
return value;
}
}
return UNKNOWN_TYPE;
}
}
String value = null;
switch (Type.toEnum(type)){
case INT:
value = String.valueOf(setting.getInt("value"));
break;
case BOOLEAN:
value = String.valueOf(setting.getBoolean("value"));
break;
case ARRAY:
parseJsonArray();
break;
}
这是正确的方法吗?
【问题讨论】:
-
它是一个错误的 Json 请先检查 json
-
这是一个jsonarray,所以你解析它,每个单元格为Object,用它构造一个Object数组。将其转换为您创建并具有这 3 个属性的自定义类型(例如:jsoncustomobject)。然后你可以根据每个类型创建一个数组
-
使用这个在线工具来解析/检查你的 json:jsonlint.com
-
这只是大json的一部分,给你一个想法。
-
你试过了吗?