向Gson介绍变量

时间:2012-03-27 18:24:33

标签: android json variables deserialization gson

我有一个包含大量类似代码的大型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);

非常感谢你!

1 个答案:

答案 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}}