2012-08-09 75 views
5

编辑:我改变了json文件的样式,使其更简单,因为我无法使用旧版本。我需要能够在java中创建一个目标数组,其中数组中的每个元素的名称都是Target_Name的值。我还需要能够合并具有不同对象名称的重复目标名称。所以基本上我想要一个目标数组,并且在每个元素中我想拥有一个包含Type,Pin_number和capabilities的对象数组。需要帮助使用gson解析json文件

我知道我可能必须创建一个目标列表类,并在目标名称和其他所有变量。我曾尝试过类似的方式,但我很难弄清楚它会如何工作。

{ 
"Targets": [ 
    { 
     "Target_Name": "----", 
     "Object_Name": "----", 
     "Type": "----", 
     "Pin_Number": "----", 
     "Capabilities": "----" 
    }, 
    { 
     "Target_Name": "----", 
     "Object_Name": "----", 
     "Type": "----", 
     "Pin_Number": "----", 
     "Capabilities": "----" 
    }, 
    { 
     "Target_Name": "----", 
     "Object_Name": "----", 
     "Type": "----", 
     "Pin_Number": "----", 
     "Capabilities": "----" 
    }, 
    { 
     "Target_Name": "----", 
     "Object_Name": "----", 
     "Type": "----", 
     "Pin_Number": "----", 
     "Capabilities": "----" 
    } 
] 

}

+1

什么热烈欢迎StackOverflow的我的朋友@CodeDroid。也许为非首次使用者保存? – 2012-08-09 00:04:00

回答

2

它是非常简单的,下面是一些代码如何加载和读取节点。它将帮助您了解如何查询您的数据。

Reader reader = null; 
InputStream stream = context.getResources() 
    .openRawResource(R.raw.json_file); 
reader = new BufferedReader(new InputStreamReader(stream), 8092); 

// parse json 
JsonParser parser = new JsonParser(); 
JsonObject jsonObj = (JsonObject)parser.parse(reader); 

//你的JSON解析是要看起来像下面的如何读取数值

JsonArray targets= jsonObj.getAsJsonArray("Targets"); 

List<Target> targetList = new ArrayList<Target>(); 
for (JsonElement target: targets) { 

    JsonObject targetObject = target.getAsJsonObject(); 
    String targetName= targetObject.get("Target_Name").getAsString(); 
    ....//get the rest 

    // create target object 
    targetList.add(new Target(targetName, ....)); 
} 

//实例和查询对象

for (Entry<String, JsonElement> entry : rootElem.entrySet()) 
{ 
    int key = Integer.parseInt(entry.getKey()); 
    JsonObject jsonObject = entry.getValue().getAsJsonObject(); 
} 


// get integer element 
int key = Integer.parseInt(entry.getKey()); 

// get child object 
JsonObject jsonObject = entry.getValue().getAsJsonObject(); 

// get string element   
String title = jsonObject.get("Object_Name").getAsString(); 
+0

文件不是原始资源。我有一个http连接到谷歌云,并有一个URL到JSON文件。问题是解析这个文件并保存这些变量供以后使用。我会尽力实现你提到的其他事情。 – zms6445 2012-08-09 00:23:05

+0

@ user1586194不管什么是json文件的来源,只要从Reader的任何地方读取它即可,或者直接读取String或给JsonParser.parse()方法。 – Maxim 2012-08-09 00:25:32

+0

JsonParser和JsonObject不是包含在android sdk中的json类的一部分吗? gson是否有相同的? – zms6445 2012-08-09 00:28:13