I have a data.json file, the content is like this:
[
{"raw":"{\"productId\":\"PU02\",\"productType\":\"RAU\", \"productDate\":\"2022-06-03\"}"},
{"raw":"{\"productId\":\"AB03\",\"productType\":\"PUE\", \"productDate\":\"2022-05-28\"}"},
...
]
I would like to parse this json file in my gradle(java) project & transform the data to objects of following class:
public class Raw {
private String productId;
private String productType;
private String productDate;
public Raw(String productId, String productType, String productDate){
this.productId=productId;
this.productType=productType;
this.productDate=productDate;
}
}
I tried using this library in my gradle project:
// https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple
implementation 'com.googlecode.json-simple:json-simple:1.1.1'
Parsing the file (I put it under "/resource" folder):
InputStream inputStream = getClass().getClassLoader().getResourceAsStream("data.json");
JSONParser parser = new JSONParser();
try {
JSONArray jsonArr = (JSONArray) parser.parse(new InputStreamReader(inputStream, "UTF-8"));
Iterator iterator = jsonArr.iterator();
while(iterator.hasNext()) {
JSONObject jsonData = (JSONObject) iterator.next();
// The jsonData represents each json object in the data. But how can I parse each field value out?
}
} catch (IOException e) {
...
}
I get stuck how can I parse each field value out from the json data in the while loop above, also please notice there are a lot of backslashes in the data. Could someone please guide me?
In your JSON file,
raw's value is not in JSON format, it's in String which is a JSON value of its own. In this case, you need to parse to string to JSON again.Output (added a toString method):