首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java中解析JSON数组

在Java中解析JSON数组
EN

Stack Overflow用户
提问于 2014-12-09 05:33:14
回答 1查看 401关注 0票数 1

我在分析java中的json数组时遇到了问题。

我有一个如下所示的从服务器返回的JSON数组

代码语言:javascript
复制
   [
{
    "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解析这个数组,但到目前为止还不成功。我写了以下代码

代码语言:javascript
复制
     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。

有人能帮我吗?

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2014-12-09 05:37:47

您的firstResponse.readEntity(String.class)调用似乎有问题。否则就不会有[null, null]作为输出。所以问题首先出现在这里。试着让它工作起来。

然后,如果您没有在类的字段上指定SerializedName规则,GSON要求名称必须与JSON文件中的键名称完全匹配。

在JSON端有"Transaction-Id",但是您在Java文件中将其定义为Transaction_IdChallenge_Response也是如此。

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

代码语言:javascript
复制
class round1Body {
    String User;
    @SerializedName("Transaction-Id")
    String Transaction_Id;
    @SerializedName("Challenge-Response")
    String Challenge_Response;
    String Challenge;
    //...
}

通过这些更改,它可以成功打印(我正在从文件中读取您的JSON字符串):

代码语言:javascript
复制
[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=]

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27367352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档