简体   繁体   English

如何使用Gson将嵌套的json对象添加到文件?

[英]How do I add nested json Objects to file using Gson?

So I have the following code: 所以我有以下代码:

  Team team = new Team();
                        team.setLeader(player.getUniqueId().toString());
                        team.setTeamName(args[1]);
                        team.setSerilizedInventory(InventoryStringDeSerializer.InventoryToString(inventory));

                        List<String> mods = new ArrayList<String>();

                        team.setMods(mods);
                        team.setMembers(members);
                        Teams teams = new Teams();
                        teams.setTeam(team);
                        try{
                            Gson gson = new GsonBuilder().setPrettyPrinting().create();
                            Writer writer = new FileWriter(instance.getFile());
                            gson.toJson(team, writer);
                            writer.close();

                        }catch(IOException e){
                            e.printStackTrace();
                        }

I am attempting to create a json file that contains all my team values, but I am not sure how to make it in nested object forum. 我正在尝试创建一个包含我所有团队价值的json文件,但是我不确定如何在嵌套对象论坛中创建它。 I am wanting to follow this json structer. 我想跟随这个json构造函数。

{
    "teams",{
        "teamname",{
            "members":["069dcc56-cc5b-3867-a4cd-8c00ca516344"],
            "leader": "RenegadeEagle",
            "serilizedInventory": "54;",
            "mods":[],
            leader: "069dcc56-cc5b-3867-a4cd-8c00ca516344",
        }   
    }
}

That may not even be proper Json but you get the idea. 杰森(Json)可能甚至不合适,但您明白了。 So how would I write this using gson to a file? 那么我如何使用gson将其写入文件? Thanks. 谢谢。

Please check this solution, you need to have reference in multiple levels 请检查此解决方案,您需要多个级别的参考

For writing file to the Android file system refer this link for solution Error: Could not find or load main class com.example.pdfone.MainActivity 要将文件写入Android文件系统,请参考此链接以获取解决方案错误:找不到或加载主类com.example.pdfone.MainActivity

However i strongly recommend you to store this JSON in a SQL Lite Table. 但是,我强烈建议您将此JSON存储在SQL Lite表中。

Team.java Team.java

import java.util.List;


public class Team {

    private String leader;

    private String serilizedInventory;

    private List members;

    private List mods;

    public String getLeader() {
        return leader;
    }

    public void setLeader(String leader) {
        this.leader = leader;
    }

    public String getSerilizedInventory() {
        return serilizedInventory;
    }

    public void setSerilizedInventory(String serilizedInventory) {
        this.serilizedInventory = serilizedInventory;
    }

    public List getMembers() {
        return members;
    }

    public void setMembers(List members) {
        this.members = members;
    }

    public List getMods() {
        return mods;
    }

    public void setMods(List mods) {
        this.mods = mods;
    }



}

TeamsWrapper.java TeamsWrapper.java

import java.util.List;


public class TeamsWrapper {

    private List<Team> team;

    private String teamName;

    public List<Team> getTeam() {
        return team;
    }

    public void setTeam(List<Team> team) {
        this.team = team;
    }

    public String getTeamName() {
        return teamName;
    }

    public void setTeamName(String teamName) {
        this.teamName = teamName;
    }



}

Test.java --> Main Program Test.java->主程序

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;


public class Test {

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub

        Team team = new Team();

        team.setLeader("RenegadeEagle");
        team.setSerilizedInventory("54;");
        team.setMods(new ArrayList());


        List members = new ArrayList();
        members.add("069dcc56-cc5b-3867-a4cd-8c00ca516344");

        team.setMembers(members);

        TeamsWrapper tw = new TeamsWrapper();

        List ls1 = new ArrayList();

        ls1.add(team);
        ls1.add(team);

        tw.setTeam(ls1);
        tw.setTeamName("teamname");


        Gson gson = new GsonBuilder().create();
        System.out.println(gson.toJson(tw));



    }

}

Final Output from the program 程序的最终输出

{
    "team" : [{
            "leader" : "RenegadeEagle",
            "serilizedInventory" : "54;",
            "members" : ["069dcc56-cc5b-3867-a4cd-8c00ca516344"],
            "mods" : []
        }, {
            "leader" : "RenegadeEagle",
            "serilizedInventory" : "54;",
            "members" : ["069dcc56-cc5b-3867-a4cd-8c00ca516344"],
            "mods" : []
        }
    ],
    "teamName" : "teamname"
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM