在json中解析动态变量名和计数

时间:2014-04-12 15:12:46

标签: java json gson

JSON:

{ 
    id: "val", 
    name: "val", 
    var1: "val", 
    var2: "val",
    ... 
    var#: "val" 
}

在PHP中,我会写一些类似的东西:

while(isset(${"var".$i++}))

但是如何在Java中解析它(使用gson)......它可能吗?

2 个答案:

答案 0 :(得分:1)

如果您只想提取值并且不依赖于任何数据绑定,那么您可以使用Gson解析器来解析JSON树并自己进行操作。

示例代码如下所示。

JsonParser jsonParser = new JsonParser();
JsonElement tree = jsonParser.parse(json_input);

// now you can walk it
JsonObject document = tree.getAsJsonObject();

//check if -- is set
document.has("var1");

// get the value
document.get("var1").getAsString()

// assuming your identifiers are are all consecutively numbered
for (int i = 1; document.has("var" + i); i++)
    document.get("var" + i).getAsString();
}

// or to mimic your example - at the expense of readability
int i = 0;
while (document.has("var" + ++i)) {
    document.get("var" + i).getAsString();
}

答案 1 :(得分:0)

是的,你可以使用这样的东西。

var i = 1;
while (typeof e("data.var" + i) != 'undefined') {
  // DO STUFF
  i++
}

我质疑为什么这是必要的,将var1和var2变成数组会更容易,例如

{ 
id: "val", 
name: "val", 
myVar: [
        {"1" : "val", 
        {"2" : "val"}
       ],
... 
var#: "val" 
}

然后你可以使用foreach和(我认为)如果你有很多我可以获得性能提升