각 객체에는 다른 객체와 배열이 포함될 수있는 여러 개의 JSON 객체가있는 파일이 있습니다.Jackson을 사용하여 개별 JSON 이벤트 읽기
나는이를 선호하지 않게 잭슨 라이브러리를 사용하여 최상위 객체 분리를 유지하는 데이터 구조로 역 직렬화하고자한다. 배열 또는 Java HashMap<String, String>
개체의 목록입니다. 여기서 각 HashMap
에는 파일의 단일 최상위 JSON 개체의 데이터가 포함됩니다.
, 당신은 잭슨에서 HashMap<String, String>
를 얻을 수 없다, 그래서 HashMap<String, Object>
참아 있습니다
List<HashMap<String,Object>> values = new ObjectMapper().readValue(new BufferedReader(new FileReader(path)), new TypeReference<List<HashMap<String, Object>>>() {});
예상대로, 그러나 나는 작품 위의 직렬화를 얻을 수있는 모든 파일 데이터 및 단일 JSON 객체의 데이터가 아닙니다.
아이디어가 있으십니까?
감사합니다.
Reader inputReader = new BufferedReader(new FileReader(filename));
int readEvents = 0;
JsonFactory factory = new JsonFactory();
JsonParser parser = factory.createJsonParser(inputReader);
JsonToken token = null;
ObjectMapper mapper = new ObjectMapper();
HashMap<String,Object> attributes = null;
ArrayList<Map<String,Object>> matchedEvents = new ArrayList<Map<String,Object>>();
try
{
while ((token=parser.nextToken()) != null)
{
if (token == JsonToken.START_OBJECT)
{
readEvents++;
attributes = mapper.readValue(parser,
new TypeReference<HashMap<String, Object>>() {});
if (attributes != null)
{
matchedEvents.add(attributes);
}
}
}
}
catch (Exception e)
{
e.printStackTrace();
}
System.out.println("Read " + readEvents + " events");
위 ArrayList
에 배치 HashMap<String, Object>
각 객체가 하나의 (최상위) JSON 이벤트에 해당
사용하려는 것과 일치하는 간단한 JSON 예제는 무엇입니까? –