[英]Parse JSON Array in Java
我在解析Java中的json数组时遇到麻烦。
我从服务器返回如下所示的JSON数组
[
{
"User": "538000001",
"Transaction-Id": "oHbgP2y2OXfdDcxAOI/q9HxY68PNs+xS+8CvfGpoN2ZUU/8mavBaI0564VeZXYBDMnk84kkfZeCJM51I92rFdf4Zi4uKEoqJd7jr78bXo4MOyoSs5mntIir7aVJ9/b+4nz6x2+g0LPY7+Sq8RHvbr+c4Evhg+VXeKDzE3f6+bJo=,YWFhd3MxLnJlYWxtMTsxNDE4MDczNTk0MjkxOzUyQDUzODAwMDAwMQ==",
"Challenge-Response": "7ZGlkpVfYvQDjvTa2EShZwZ3dGc=",
"Challenge": "MzcrMzM3NzA4MTM3KzE0MTgwNzM1OTQ="
},
{
"User": "538000000",
"Transaction-Id": "+5Oi4NnG9HOVMPx4nM/TP4ZBONG4HtOBbA5+uf/d+hik7o1Aes9H0PLCqAgG/Td2xLDPOdZJJW7ppj3MLkZBvJr+t9JWKdSGpGHAYTp0oonRTVsesPVCtNI6dXvMY9P+bHDiBWkZiqjSjOZuuzImLaJ17G1/D/GNqIonaNCjqjo=,YWFhd3MxLnJlYWxtMTsxNDE4MDczNTk0Mjk1OzUzQDUzODAwMDAwMA==",
"Challenge-Response": "eEzLzYLmzo5R2tNwokG0mfbuLZY=",
"Challenge": "MzgrNDY2NjY4NjgyKzE0MTgwNzM1OTQ="
}
]
我正在使用GSON解析此数组,但到目前为止没有成功。我编写了以下代码
class round1Body
{
String User;
String Transaction_Id;
String Challenge_Response;
String Challenge;
round1Body(String User,String Transaction_Id,String Challenge_Response,String Challenge)
{
this.User = User;
this.Transaction_Id=Transaction_Id;
this.Challenge_Response = Challenge_Response;
this.Challenge=Challenge;
}
@Override
public String toString()
{
return "User = " + User + " Transaction-Id = " + Transaction_Id + " Challenge-Response = " + Challenge_Response + "Challenge = "
+ Challenge;
}
}
Type listType = new TypeToken<ArrayList<round1Body>>(){}.getType();
Object jsonE = new Gson().fromJson(firstResponse.readEntity(String.class),listType);
System.out.println(jsonE);
我尝试打印时的输出为[null,null]。
有人可以帮我吗?
提前致谢 !
似乎您对firstResponse.readEntity(String.class)
调用有问题。 否则,您将不会有[null, null]
作为输出。 所以问题首先出在这里。 尝试使它起作用。
然后,如果未在类的字段中指定SerializedName
规则,则GSON要求名称必须与JSON文件中的键名完全匹配。
您在JSON端具有"Transaction-Id"
,但在Java文件中将其定义为Transaction_Id
,与Challenge_Response
相同。
由于在Java中,标识符不能包含-
,因此您需要为这两个属性指定规则。
class round1Body {
String User;
@SerializedName("Transaction-Id")
String Transaction_Id;
@SerializedName("Challenge-Response")
String Challenge_Response;
String Challenge;
//...
}
通过这些更改,它可以成功打印(我正在从文件中读取JSON字符串):
[User = 538000001 Transaction-Id = oHbgP2y2OXfdDcxAOI/q9HxY68PNs+xS+8CvfGpoN2ZUU/8mavBaI0564VeZXYBDMnk84kkfZeCJM51I92rFdf4Zi4uKEoqJd7jr78bXo4MOyoSs5mntIir7aVJ9/b+4nz6x2+g0LPY7+Sq8RHvbr+c4Evhg+VXeKDzE3f6+bJo=,YWFhd3MxLnJlYWxtMTsxNDE4MDczNTk0MjkxOzUyQDUzODAwMDAwMQ== Challenge-Response = 7ZGlkpVfYvQDjvTa2EShZwZ3dGc=Challenge = MzcrMzM3NzA4MTM3KzE0MTgwNzM1OTQ=, User = 538000000 Transaction-Id = +5Oi4NnG9HOVMPx4nM/TP4ZBONG4HtOBbA5+uf/d+hik7o1Aes9H0PLCqAgG/Td2xLDPOdZJJW7ppj3MLkZBvJr+t9JWKdSGpGHAYTp0oonRTVsesPVCtNI6dXvMY9P+bHDiBWkZiqjSjOZuuzImLaJ17G1/D/GNqIonaNCjqjo=,YWFhd3MxLnJlYWxtMTsxNDE4MDczNTk0Mjk1OzUzQDUzODAwMDAwMA== Challenge-Response = eEzLzYLmzo5R2tNwokG0mfbuLZY=Challenge = MzgrNDY2NjY4NjgyKzE0MTgwNzM1OTQ=]
请注意,您可以使用此批注遵守命名约定。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.