Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Gson将POJO序列化为Json_Gson - Fatal编程技术网

使用Gson将POJO序列化为Json

使用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"

嗨,我需要这样一个json输出,使用Gson作为序列化程序

这是我的DealInfo.java模型

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"
          }
        ]
      }
    ]
  }
]