我正在使用GSON 1.7.1库来创建许多Java对象的JSON表示。这种方法效果很好,但是当类扩展时,例如Vector<字符串>然后输出中缺少字段。
实际输出:
[
"String 1",
"String 2"
]
必填/预期输出 我想要显示新对象的字段的内容以及我正在扩展的Vector的内容。比如这样......
{
"extraInfo": "Extra Info",
"vector": [
"String 1",
"String 2"
]
}
我将此添加到现有代码中,因此我无法从扩展类型Vector<中更改类结构。字符串>包含Vector<类型的字段字符串>
以下是示例源代码...
import java.util.Vector;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
public class ExtendedStringVector extends Vector<String>{
private String extraInfo = "";
public String toString(){
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String jsonOutput = gson.toJson(this);
return jsonOutput;
}
public void setExtraInfo(String test) {
this.extraInfo = test;
}
public String getExtraInfo() {
return extraInfo;
}
public static void main(String[] args) {
ExtendedStringVector esv = new ExtendedStringVector();
esv.add("String 1");
esv.add("String 2");
esv.setExtraInfo("Extra Info");
System.out.println(esv.toString());
}
}
有一些documentantion here看起来很接近我需要的东西,但不包括我的情况。
有一种简单的方法来获得我期望的输出吗?我错过了简单的设置或输入参数吗?
答案 0 :(得分:1)
您所需的输出是无效的JSON结构。
这样的事情是有效的:
{
"extraInfo": "Extra Info",
"vector" : [
"String 1",
"String 2"
]
}
要实现这一点,您需要一个由String对象组成的对象,以及String对象的列表(可以是向量或数组或List)。
请参阅此question。
答案 1 :(得分:1)
我查看了一些Java-to / from-JSON库,但没有看到任何具有内置功能的内容,就像你所追求的那样。自定义序列化/反序列化是必要的。