使用Gson将POJO序列化为Json
嗨,我需要这样一个json输出,使用Gson作为序列化程序 这是我的DealInfo.java模型使用Gson将POJO序列化为Json,gson,Gson,嗨,我需要这样一个json输出,使用Gson作为序列化程序 这是我的DealInfo.java模型 Expected Output : [ { "title" : "Dessert", "food_details": [ { "name" : "leche plan", "price":"362", "add_ons" : [ { "extra": "add milk"
Expected Output :
[
{
"title" : "Dessert",
"food_details": [
{
"name" : "leche plan",
"price":"362",
"add_ons" : [
{
"extra": "add milk",
"extra_price": 500
}
]
}
]
}
]
问题是如何在food_details中添加add_-ons json数组,就像预期的输出一样
提前谢谢
如果我用强硬的方式做,事情会是这样的,我不想这样:
{
"_food_details": [
{
"name": "Foood 1",
"price": "666"
},
{
"name": "Foood 2",
"price": "667"
},
{
"name": "Foood 3",
"price": "668"
},
{
"name": "Foood 4",
"price": "669"
},
{
"name": "Foood 5",
"price": "660"
}
],
"title": "My Own Title"
}
删除了所有不重要的细节和方法
DealInfo dealInfo = new DealInfo();
ArrayList<DealInfo.food_details> detailsArrayList = new ArrayList<>();
ArrayList<DealInfo.add_ons> addOnsArrayList = new ArrayList<>();
detailsArrayList.add(new DealInfo.food_details("Foood 1", "666"));
detailsArrayList.add(new DealInfo.food_details("Foood 2", "667"));
detailsArrayList.add(new DealInfo.food_details("Foood 3", "668"));
detailsArrayList.add(new DealInfo.food_details("Foood 4", "669"));
detailsArrayList.add(new DealInfo.food_details("Foood 5", "660"));
addOnsArrayList.add(new DealInfo.add_ons("Leche Flan", "653"));
addOnsArrayList.add(new DealInfo.add_ons("Leche Con Yelo", "641"));
addOnsArrayList.add(new DealInfo.add_ons("Leche Con Kasoy", "777"));
Gson gson = new Gson();
dealInfo.setTitle("My Own Title");
dealInfo.setFood_details(detailsArrayList);
String output = gson.toJson(dealInfo);
Log.d("jsonstringoutput", output);
{
"_food_details": [
{
"name": "Foood 1",
"price": "666"
},
{
"name": "Foood 2",
"price": "667"
},
{
"name": "Foood 3",
"price": "668"
},
{
"name": "Foood 4",
"price": "669"
},
{
"name": "Foood 5",
"price": "660"
}
],
"title": "My Own Title"
}
JSONArray mainArray = new JSONArray();
JSONObject jsonObject = new JSONObject();
JSONObject foodObject = new JSONObject();
JSONArray foodArray = new JSONArray();
JSONObject addOnsObject = new JSONObject();
JSONArray addOnsArray = new JSONArray();
try {
foodObject.put("name", "food 1");
foodObject.put("price", "600");
foodArray.put(foodObject);
addOnsObject.put("extra", "milk");
addOnsObject.put("extra_price", "150");
addOnsArray.put(addOnsObject);
jsonObject.put("food_details", foodArray);
jsonObject.put("title", "My Own Food");
foodObject.put("add_ons", addOnsArray);
mainArray.put(jsonObject);
} catch (JSONException e) {
e.printStackTrace();
}
Log.d("jsonoutput", mainArray.toString());
import java.util.List;
public class DealInfo {
public String title;
public List<Food> foods;
}
public class Addon {
private String extra;
private String extra_price;
public Addon(String extra, String extra_price) {
this.extra = extra;
this.extra_price = extra_price;
}
}
import java.util.List;
public class Food {
private String name;
private String image;
private String price;
public List<Addon> addons;
public Food(String name, String price){
this.name = name;
this.price = price;
}
}
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.util.ArrayList;
import java.util.List;
public class JsonExample {
public static void main(String[] args) {
List<DealInfo> dealInfos = new ArrayList<DealInfo>();
DealInfo dealInfo = new DealInfo();
Food food = new Food("Food 1", "1000");
List<Food> foods = new ArrayList<Food>();
Addon addon = new Addon("extra 1", "100");
List<Addon> addons = new ArrayList<Addon>();
addons.add(addon);
food.addons = addons;
foods.add(food);
dealInfo.foods = foods;
dealInfo.title = "http://lenar.io :)";
dealInfos.add(dealInfo);
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String json = gson.toJson(dealInfos);
System.out.println(json);
}
}
[
{
"title": "http://lenar.io :)",
"foods": [
{
"name": "Food 1",
"price": "1000",
"addons": [
{
"extra": "extra 1",
"extra_price": "100"
}
]
}
]
}
]