我有一个包含大量类似代码的大型JSON文件。它与此类似:
...,"techs":{"t1":{"level":24,"able":true},"t2":{"level":23,"able":true},"t3":{"level":20,"able":true},"t4"...,"t5"...
从 t1 直到 t510 ...因此,我必须为每个 tN 创建一个活动,所以我有创造510项活动! 0.0
要访问每个 tN ,请使用以下行:
Gson gson = new Gson();
Planets json = gson.fromJson(str, Planets.class);
System.out.println(json.techs.t1.level);
System.out.println(json.techs.t2.level);
etc...
所以我想知道是否有可能为变量更改 t1 ,因此我只需要更改变量以在单个活动中访问 t2 。 / p>
例如:String tech = t456; System.out.println(json.techs.tech.level);
非常感谢你!
答案 0 :(得分:1)
这完全取决于你的想象力; - )
我将从这个JSON片段中脱颖而出
"techs":{"t1":{"level":24,"able":true},"t2":{"level":23,"able":true},"t3":{"level":20,"able":true}}
这很容易表现为这种结构
HashMap<String, InnerObject>
其中InnerObject
类的定义如下:
class InnerObject {
int level;
boolean able;
}
所以你需要的只是类,其中单个字段将被称为techs
,它将被定义为:
class JSONWrapper {
// another variables
HashMap<String, InnerObject> techs;
}
要访问之后的字段,您可以使用:
String techId = "t546";
InnerObject = JSONWrapperInstance.techs.get(techId);
整个代码:
String str = "... contains JSON string ...";
JSONWrapper JSONWrapperInstance = new Gson().fromJson(str, JSONWrapper.class);
您可以像HashMap
一样浏览Iterator<String> iterator = JSONWrapperInstance.techs.keySet().iterator();
while(iterator.hasNext()){
InnerObject = JSONWrapperInstance.techs.get(iterator.next());
}
中的所有项目:
{{1}}