我有以下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"));
答案 0 :(得分:2)
您可以使用
String[] keyNames= JSONObject.getNames(jsonObject);
获取密钥的名称。 Javadoc
使用此功能,您可以使用getJSONObject
获取值循环使用这些可以构建您正在寻找的数组。
答案 1 :(得分: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));
这就是你如何迭代JSONObject
的条目。顺便说一句,使用这个库,如果它是我认为你正在使用的那个,JSONObject
只是一个java.util.Map
,你可以使用它的所有方法 - 这就是为什么它适用于这个例子将解析结果转换为Map
。
所有JSON< - >此lib的Java对象映射:https://code.google.com/p/json-simple/wiki/MappingBetweenJSONAndJavaEntities
答案 2 :(得分: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);
}
确保杰克逊图书馆在您的班级路径中。使用代码时导入以下类:
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;