임의의 필드 구문 분석 JSON (자바)

Arlet09 :

나는 변환 할 JSON에 파일을 CSV파일.

JSON파일은에서 오는 DataBase에 저장 Firebase하고이 같은 구조를 가지고 :

{
  "PATIENT" : {
     "-LbhwHC7Y6_umc" : {
       "age" : 31,
       "name" : "Phoebe"
    },
    "-LbhwTFJ6xjEf" : {
      "age" : 20,
      "name" : "Amy"
    },
    "-LbhxUmJ_dwIC" : {
      "age" : 28,
      "name" : "Joe"
    }
  }
}

나는 그것을 할 노력하고있어 Gson:

package Parser;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import com.google.gson.Gson;


public class Main {

public static void main(String[] args) {

    Gson gson = new Gson();

    try {

        BufferedReader br = new BufferedReader(
            new FileReader("c:\\file.json"));



    } catch (IOException e) {
        e.printStackTrace();
    }

}
}

내 문제는 내가 만드는 방법을 모르겠입니다 JSON같은 임의 필드 개체를 :

"-LbhwHC7Y6_umc", "-LbhwTFJ6xjEf"와 "-LbhxUmJ_dwIC"

중포 기지 의해 생성

마이클 Ziober :

사용하여 Jackson라이브러리를 당신은 이미 매퍼가 JSONCSV하나의 라이브러리입니다. 당신 읽고 간단한 예 JSOn와 생성 CSV:

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SequenceWriter;
import com.fasterxml.jackson.dataformat.csv.CsvMapper;
import com.fasterxml.jackson.dataformat.csv.CsvSchema;

import java.io.File;
import java.io.IOException;

public class JsonApp {

    public static void main(String[] args) throws Exception {
        File jsonFile = new File("./resource/test.json").getAbsoluteFile();

        // read JSON
        ObjectMapper mapper = new ObjectMapper();
        JsonNode root = mapper.readTree(jsonFile);
        JsonNode patient = root.get("PATIENT");

        // Write CSV
        CsvMapper csvMapper = new CsvMapper();
        CsvSchema schema = CsvSchema.builder()
                .addColumn("age", CsvSchema.ColumnType.NUMBER)
                .addColumn("name")
                .setUseHeader(true)
                .build();
        try (SequenceWriter sequenceWriter = csvMapper.writer().with(schema).writeValues(System.out)) {
            patient.elements().forEachRemaining(node -> {
                try {
                    sequenceWriter.write(node);
                } catch (IOException e) {
                    throw new IllegalStateException(e);
                }
            });
        }
    }
}

인쇄물:

age,name
31,Phoebe
20,Amy
28,Joe

일반적으로, 당신이 임의의 키가있을 때 JSON페이로드를 당신은 그것을 deserialise 수 Map<String, Object>있는 JacksonGson라이브러리.

끄트머리를 참조하십시오 :

추천

출처http://43.154.161.224:23101/article/api/json?id=214748&siteId=1