Заполнить массив из файла JSON, не зная ключей
У меня есть следующий файл 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"));
3 ответа
Проверьте пример 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 <-> Java для этой библиотеки: https://code.google.com/p/json-simple/wiki/MappingBetweenJSONAndJavaEntities
Ты можешь использовать
String[] keyNames= JSONObject.getNames(jsonObject);
чтобы получить имена ключей. Javadoc
Используя это, вы можете получить значения с помощью getJSONObject
Зацикливая их, вы можете создать массив, который вы ищете.
Вы также можете попробовать следующий код:
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;