[英]Google Gson not deserializing simple object with ArrayList properly
我正在尝试Gson,但无法解决这个问题。
最终发生的事情是创建了Network类(我的JSON根),并添加了三层。 这3个层没有设置正确的“输入”或“输出”值(均为0)。
我期望输入和输出值大于0的三层。
以下是我的JSON以及类和Gson的代码。
谁能告诉我这是怎么回事? 是我的JSON结构还是Java结构?
Gson代码:
try(Reader reader = new InputStreamReader(ModelLoader.class.getResourceAsStream("/test.json"), "UTF-8")){
Gson gson = new GsonBuilder().create();
Network n = gson.fromJson(reader, Network.class);
System.out.println(n);
}
我有一个非常非常简单的JSON, 如下所示(根据下面的讨论进行编辑) :
{
"layers" : [
{"layer":
{"input":300,
"output":8000}
},
{"layer2":
{"input":300,
"output":8000}
},
{"layer3":
{"input":300,
"output":8000}
}
]
}
这是Layer类:
public class Layer {
int input;
int output;
float[][] weights;
float[] inputs;
float[] outputs;
public Layer(int input, int output) {
...constructor code initializes vars...
}
public void setInput(int input) {
this.input = input;
}
public void setOutput(int output) {
this.output = output;
}
public void setInputs(float[] inputs) {
this.inputs = inputs;
}
public void setWeight(float[][] weights) {
this.weights = weights;
}
}
这是包含图层数组列表的类:import java.util.ArrayList;
public class Network {
ArrayList<Layer> layers;
public Network() {
layers = new ArrayList<Layer>();
}
public void addLayer(Layer l) {
layers.add(l);
}
}
您的JSON(以及相应的POJO)结构应该看起来像这样:
{
"layers" : [
{"input":300,output":8000},
{"input":300,"output":8000},
{"input":300,"output":8000}
]
}
public class Layer {
int input;
int output;
}
public class Network {
ArrayList<Layer> layers;
}
如果每个图层还具有名称(或标签),则其应具有以下结构:
{
"layers" : [
{"label":"layer", "input":300,output":8000},
{"label":"layer1", "input":300,"output":8000},
{"label":"layer2", "input":300,"output":8000}
]
}
public class Layer {
int input;
int output;
String label;
}
public class Network {
ArrayList<Layer> layers;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.