1

我有以下 Json 文件,我想创建数组列表,我不知道键名(如人员、姓氏等)它可以是许多实体,如雇员用户等,但文件的结构必须完全相同,我怎样才能做到这一点 ?

该文件是

{
    "Person": [
        {
            "name": "Peter",
            "lastname": "ta",
            "age": 43,
            "sex": "male"
        },
        {
            "name": "Zara",
            "lastname": "treg",
            "age": 25,
            "sex": "female"
        }
    ]
}

我需要的是创建这样的数组列表

person ,name,peter ,lastname,ta,age,43,sex,male
person ,name,zara ,lastname,treg,age,23,sex,female

……

我从以下代码开始获取文件,但由于我不知道密钥的名称,所以我不知道如何继续。

JSONObject jsonObject= (JSONObject) parser.parse(new FileReader("C:\\General\\jsonperson.txt"));
4

3 回答 3

2

您可以使用

String[] keyNames= JSONObject.getNames(jsonObject);

获取键的名称。 Javadoc

使用它,您可以使用getJSONObject获取值

循环这些你可以构造你正在寻找的数组。

于 2013-03-03T15:10:46.067 回答
1

检查此页面上的示例 4:https ://code.google.com/p/json-simple/wiki/DecodingExamples

具体来说,这部分:

Map json = (Map)parser.parse(jsonText, containerFactory);
Iterator iter = json.entrySet().iterator();
System.out.println("==iterate result==");
while(iter.hasNext()){
  Map.Entry entry = (Map.Entry)iter.next();
  System.out.println(entry.getKey() + "=>" + entry.getValue());
}

System.out.println("==toJSONString()==");
System.out.println(JSONValue.toJSONString(json));

这就是您可以迭代 a 的条目的方式JSONObject。顺便说一句,对于这个库,如果它是我认为您正在使用的库,那么 aJSONObject只是 a java.util.Map,您可以使用它的所有方法——这就是为什么这个示例可以将解析结果转换为 a 的原因Map

此库的所有 JSON <-> Java 对象映射:https ://code.google.com/p/json-simple/wiki/MappingBetweenJSONAndJavaEntities

于 2013-03-03T15:08:57.897 回答
1

你也可以试试下面的代码:

public void performExecute() throws IOException {        
        JsonFactory jsonFactory = new JsonFactory(); 
        ObjectMapper objectMapper = new ObjectMapper(jsonFactory); 
        File file = new File("json.txt"); 
        TypeReference<HashMap<String, Object>> typeReference = new TypeReference<HashMap<String, Object>>() {}; 
        HashMap<String, Object> jsonMap = objectMapper.readValue(file, typeReference); 
        System.out.println("JSON DATA: " + jsonMap); 
    } 

确保 Jackson 库在您的类路径中,并且在使用代码时导入以下类:

import java.io.File;
import java.io.IOException;
import java.util.HashMap;

import org.codehaus.jackson.JsonFactory;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;
于 2013-03-03T15:40:09.737 回答