我正在尝试构建一个包含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;
}
}
任何帮助?
答案 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;}]