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
Usually it is easiest to just model Java DTO classes holding the data.
So in your JSON you have an object -let us say wrapper -that contains another object having label PATIENT. And because the fields that PATIENT has are arbitrary names AND it also seems that the data each field contain is actually the Patient it thus suggest that PATIENT is a Map having those arbitrary field names as the keys and instances of patienta as the values of each entry.
So the Wrapper would be like:
@Getter
public class Wrapper {
// We want the correct notation & plural, of course
@SerializedName("PATIENT")
private Map<String, Patient> patients;
}
The Patient would be then like:
@Getter
public class Patient {
private String name;
private Integer age;
}
Deserialisation nad using would then be something like:
Wrapper w = gson.fromJson(new FileReader("c:\\file.json"), Wrapper.class );
w.getPatients().keySet().... // or however it is most comfortable
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With