I am new to ndJSON
. I have an ndJSON
file with the following data:
{
"Top-level":{
"customer_no":"1",
"created":"2019-03-27 14:24:54",
"last_visited_day_time":null,
"login":"roni_cost@example.com"
},
"profile":{
"salutation":"Mr",
"title":null,
"company":null,
"job_title":null,
"first_name":"Veronica",
"last_name":"Costello",
"name_suffix":"NONE",
"gender":"Female",
"birthday":"1973-12-15",
"email":"roni_cost@example.com",
"next_birthday":"2022-12-15",
"second_name":null
},
"phone":{
"home_phone":null,
"business_phone":null,
"mobile_phone":null,
"fax_number":null
},
"addresses":[
{
"address_id":"1",
"title":"",
"company":null,
"salutation":null,
"first_name":"Veronica",
"last_name":"Costello",
"second_name":null,
"suffix":"NONE",
"address_1":"6146 Honey Bluff Parkway",
"address_2":"",
"suite_no":"",
"postal_box":"",
"city":"Calder",
"postal_code":"49628-7978",
"country":"US",
"state":"Michigan",
"contact_phone":"(555) 229-3326"
}
],
"orders":{
"placed_orders_count":2,
"0":{
"order_id":"000000001",
"order_date":"2019-03-27 14:25:03"
},
"1":{
"order_id":"000000002",
"order_date":"2019-03-27 14:25:03"
}
},
"customs":[
]
}
I want to read this file into my program and extract data from it.
Following is my code to read the file from my system and trying to write it in CustomerDTO
object
Gson gson = new Gson();
JsonReader reader = new JsonReader(new FileReader("customer.json"));
customerFeedDTO = gson.fromJson(reader, CustomerFeedDTO.class);
But I am getting following exception:
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 138 path $.profile
And my CustomerFeedDTO is:
public class CustomerFeedDTO {
private ArrayList<?> topLevel;
private ArrayList<?> profile;
private ArrayList<?> phone;
private ArrayList<?> addresses;
private ArrayList<?> orders;
private ArrayList<?> customs;
//Getters and setters
I am trying to map all the data from the ndJSON
file into my customerDTO
object
As per the given json, your model class should looks like below.
public class CustomerFeedDTO {
private Map<String, ?> topLevel;
private Map<String, ?> profile;
private Map<String, ?> phone;
private ArrayList<?> addresses;
private Map<String, ?> orders;
private ArrayList<?> customs;
}
topLevel, profile, phone, orders are objects, should be modeled as objects or map, not as list.