Categories

See More
Popular Forum

MBA (4887) B.Tech (1769) Engineering (1486) Class 12 (1030) Study Abroad (1004) Computer Science and Engineering (988) Business Management Studies (865) BBA (846) Diploma (746) CAT (651) B.Com (648) B.Sc (643) JEE Mains (618) Mechanical Engineering (574) Exam (525) India (462) Career (452) All Time Q&A (439) Mass Communication (427) BCA (417) Science (384) Computers & IT (Non-Engg) (383) Medicine & Health Sciences (381) Hotel Management (373) Civil Engineering (353) MCA (349) Tuteehub Top Questions (348) Distance (340) Colleges in India (334)
See More

Parsing JSON with a random field (java)

General Tech Bugs & Fixes

Max. 2000 characters
Replies

usr_profile.png

User

( 6 months ago )

 

I want to convert a JSON file into a CSV file.

My JSON file comes from a DataBase stored in Firebase and has an structure like this:

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

I'm trying to do it with 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();
    }

}
}

My problem is that I don't know how to create a JSON object with random fields like:

"-LbhwHC7Y6_umc", "-LbhwTFJ6xjEf" and "-LbhxUmJ_dwIC"

generated by Firebase

usr_profile.png

User

( 6 months ago )

 

Using Jackson library you have already mapper for JSON and CSV in one library. Simple example which reads your JSOn and generate 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);
                }
            });
        }
    }
}

what's your interest


forum_ban8_5d8c5fd7cf6f7.gif