Ad
Parsing JSON With A Random Field (java)
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
Ad
Answer
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);
}
});
}
}
}
Prints:
age,name
31,Phoebe
20,Amy
28,Joe
Generally, when you have random keys in JSON
payload you can deserialise it to Map<String, Object>
in Jackson
and Gson
libraries.
See aslo:
Ad
source: stackoverflow.com
Related Questions
- → How to update data attribute on Ajax complete
- → October CMS - Radio Button Ajax Click Twice in a Row Causes Content to disappear
- → Octobercms Component Unique id (Twig & Javascript)
- → Passing a JS var from AJAX response to Twig
- → Laravel {!! Form::open() !!} doesn't work within AngularJS
- → DropzoneJS & Laravel - Output form validation errors
- → Import statement and Babel
- → Uncaught TypeError: Cannot read property '__SECRET_DOM_DO_NOT_USE_OR_YOU_WILL_BE_FIRED' of undefined
- → React-router: Passing props to children
- → ListView.DataSource looping data for React Native
- → Can't test submit handler in React component
- → React + Flux - How to avoid global variable
- → Webpack, React & Babel, not rendering DOM
Ad