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

Java 解析json中的动态变量名和计数,java,json,gson,Java,Json,Gson,JSON: 在PHP中,我可以编写如下内容: { id: "val", name: "val", var1: "val", var2: "val", ... var#: "val" } 但是如何在Java中解析它(使用gson)。。。这是可能的?如果您只是对提取值感兴趣,并且不依赖任何数据绑定,那么您可以使用Gson解析器来解析JSON树,然后自己进行遍历 示例代码如下所示 while(isset(${"var".$i++})) 是

JSON:

在PHP中,我可以编写如下内容:

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

但是如何在Java中解析它(使用gson)。。。这是可能的?

如果您只是对提取值感兴趣,并且不依赖任何数据绑定,那么您可以使用Gson解析器来解析JSON树,然后自己进行遍历

示例代码如下所示

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

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

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();
}
我质疑为什么这是必要的,将var1和var2放入数组中会更容易

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

然后你可以使用foreach,如果你有很多I,你会得到性能提升。是的,这是可能的。您希望将其解析为什么?所有变量到1 ArrayListUse
Gson
Jackson
或任何其他JSON解析器,并将数据解析到
Map
@boristeider中好的,我将解析Map中的所有数据,然后如何将所有变量移动到arraylist?为什么要这样做?要么有许多变量,要么有一个数组。JSON具有数组的表示形式,任何好的解析器都会自动将其解析为
列表。如果您有无效的JSON,那么您必须自己处理它。+1。您甚至可以几乎完全重新创建OP的原始语法-
for(inti=0;document.has(“var”+i);+i){}
Cool,并且gson可以检查是否存在键名?是的。。。这就是代码所使用的。您可能需要根据“varX”的值调整代码。我只是假设一个字符串值。哦,我的错,我认为
JsonParser
JsonElement
来自
json.org
库。。。好的,我会测试它,然后我接受答案我不能改变json结构,但是告诉谁它不好:)但是最好的例子应该可以。
{ 
id: "val", 
name: "val", 
myVar: [
        {"1" : "val", 
        {"2" : "val"}
       ],
... 
var#: "val" 
}