Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Java解析JSON数组_Java_Json_Gson - Fatal编程技术网

用Java解析JSON数组

用Java解析JSON数组,java,json,gson,Java,Json,Gson,我很难用java解析json数组 我从服务器返回了一个JSON数组,如下所示 [ { "User": "538000001", "Transaction-Id": "oHbgP2y2OXfdDcxAOI/q9HxY68PNs+xS+8CvfGpoN2ZUU/8mavBaI0564VeZXYBDMnk84kkfZeCJM51I92rFdf4Zi4uKEoqJd7jr78bXo4MOyoSs5mntIir7aVJ9/b+4nz6x2+g0LPY7+Sq8RHvbr+c4Evhg

我很难用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);
class-round1Body
{
字符串用户;
字符串事务标识;
字符串质询应答;
弦乐挑战赛;
round1Body(字符串用户、字符串事务\u Id、字符串质询\u响应、字符串质询)
{
this.User=User;
this.Transaction\u Id=事务\u Id;
this.Challenge\u Response=Challenge\u Response;
这个。挑战=挑战;
}
@凌驾
公共字符串toString()
{
return“User=“+User+”事务Id=“+Transaction\u Id+”质询响应=“+Challenge\u Response+”质询=”
+挑战;
}
}
类型listType=newTypeToken(){}.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\u Id
,与
Challenge\u Response
相同

因为在Java中标识符不能有
-
,所以需要为这两个属性指定规则

class round1Body {
    String User;
    @SerializedName("Transaction-Id")
    String Transaction_Id;
    @SerializedName("Challenge-Response")
    String Challenge_Response;
    String Challenge;
    //...
}
通过这些更改,它成功打印(我正在从文件中读取JSON字符串):


请注意,您可以使用此注释来遵守命名约定。

非常感谢您的回复。我刚刚使用了System.out.println(firstResponse.readEntity(String.class));它打印正确,但我仍然得到相同的[null,null]:(可能是listType的问题??Type listType=new TypeToken(){}.getType();?您是否使用了我在new Gson()中使用的相同listType??fromJson(firstResponse.readEntity(String.class),listType);@shbolise是的,我复制粘贴了你的代码。唯一的区别是我正在从文件中读取json数据,这就是为什么我怀疑
firstResponse.readEntity(String.class)
是个问题。String json=firstResponse.readEntity(String.class);System.out.println(json);//工作正常对象jsonE=new Gson().fromJson(json,listType);System.out.println(jsonE);//[null,null]……我一定是做错了什么蠢事:(@shbolise你说工作好是什么意思?
json
的内容是什么?如果你把json放在一个文件中并试图从那里读取它会发生什么?在你尝试使用一个奇特的“POJO”之前解析器,学习如何将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=]