使用Gson创建Json对象的Json数组

时间:2015-08-28 15:00:22

标签: arrays json gson

我正在尝试构建一个包含Json Objects的Json数组。我记得前一段时间用org.json做这个,但现在我在用gson做这件事时遇到了麻烦。我的json数组的结构应该是:

[
    {
        "colour": "abc",
        "time": "xyz
    },
    {
        "colour": "abc",
        "time": "xyz"
    }
]

我正在通过循环浏览json格式文件从数据库读取长度和区域值。我得到了.get()感谢jersey。 我设法形成内部json对象{"colour": "xyz", "time": "abc" }。我所做的是将这些对象存储在json对象的数组中。然后我尝试使用gson.toJson方法来形成包含这些对象的数组。虽然这样做给了我一些接近我的要求,但我希望它更紧凑。这是我设法生成的json数组。

 [
{
    "members": {
        "colour": {
            "value": "xyz"
        },
        "time": {
            "value": "abc"
        }
    }
},
{
    "members": {
        "colour": {
            "value": "abc"
        },
        "time": {
                "value": "xyz"
            }
        }
    }
]

我想摆脱冗余的“成员”和“价值”关键字。

这个json数组的代码是

JsonObject[] innerObjJson = new JsonObject[hits];

for (int i=0;i<hits;i++){
        String colour  = jsonVariable.getAsJsonObject().get(i).getAsJsonObject().get("colour").toString();
        String time  = jsonVariable.getAsJsonObject().get(i).getAsJsonObject().get("time").toString();


        colour = colour.replaceAll("\"" ,"");
        time = colour.replaceAll("\"" ,"");


        InnerJsonStructure innerObj = new InnerJsonStructure(colour,time);

        Gson gson = new Gson();
        String innerObjString = gson.toJson(innerObj);
        JsonParser parserNew = new JsonParser();
        innerObjJson[i] = (JsonObject)parserNew.parse(innerObjString);
}


        Gson gson1 = new Gson();
        String finalJsonArr = gson1.toJson(innerObjJson);
        System.out.println(finalJsonArr);

InnerJsonStructure是

public class InnerJsonStructure {
    public String colour;
    public String time;



    InnerJsonStructure(String Color, String Time){
        this.colour = Color;
        this.time = Time;


    }
}

任何帮助?

1 个答案:

答案 0 :(得分:1)

您需要定义一个对象数据库,将对象列表放在一起,如下所示:

public class DataObject {

    private String colour = "";
    private String time = "";

    public String getColour() {
        return colour;
    }

    public void setColour(String colour) {
        this.colour = colour;
    }

    public String getTime() {
        return time;
    }

    public void setTime(String time) {
        this.time = time;
    }

}
import java.io.FileWriter;
import java.io.IOException;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;

public class GsonExample {

    public static void main(String[] args) {

        DataObject obj1 = new DataObject();
        obj1.setColour("abc");
        obj1.setTime("12:00");

        DataObject obj2 = new DataObject();
        obj1.setColour("def");
        obj1.setTime("24:00");

        List<DataObject> lista = new ArrayList<>();
        lista.add(obj1);
        lista.add(obj2);

        Gson gson = new Gson();
        String json = gson.toJson(lista);

        try {
            FileWriter writer = new FileWriter("c:\\file.json");
            writer.write(json);
            writer.close();

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

        System.out.println(json);

    }
}

执行代码时,控制台输出如下:

  

[{&#34;颜色&#34;:&#34; ABC&#34;&#34;时间&#34;:&#34; 12:00&#34;},{&#34;颜色& #34;:&#34; DEF&#34;&#34;时间&#34;:&#34; 24:00&#34;}]