当前位置: 首页 > 知识库问答 >
问题:

JsonPath-读取Java长类型

居星阑
2023-03-14

我得到的JSON数据如下所示

{"setsionID":7242750700467747000}

这个数字以前从服务器响应中获得,并在服务器端生成为JavaLong。客户端标识自己认为这个setsionID并将其与请求一起发送。问题是当客户端的请求到达服务器时,我必须再次解析这个值以键入Long。我使用JsonPath,具体来说:

<dependency>
    <groupId>com.jayway.jsonpath</groupId>
    <artifactId>json-path-assert</artifactId>
    <version>0.8.1</version>
    <scope>test</scope>
</dependency>

当我像这样解析JSON数据时

Long sessionID=JsonPath。读(json,“$.sessionID”);

我有个例外:

java.lang.类异常:java.lang.整数不能转换为java.lang.长

所以看起来数字被JsonPath解析为整数。这肯定会导致错误的结果,因为整数小于长。JsonPath中有没有方法解析并返回数据为长?

共有3个答案

仲孙雅达
2023-03-14

就我所见,应用编程接口不提供此选项。

所以我给你两个选择:

  1. 在JSON序列化中,将sesionId设置为String。读取String,然后解析为Long。
  2. 使用Jackson,使JSON读取。这将允许您读取Long。
凤扬
2023-03-14

好的,我设法改变了一点JsonPath提供程序。现在我使用:

<dependency>
    <groupId>com.jayway.restassured</groupId>
    <artifactId>rest-assured</artifactId>
    <version>1.7.2</version>
</dependency>

从那里我可以用

import com.jayway.restassured.path.json.JsonPath;
// ...
Long sessionID = JsonPath.with(json).getLong("sessionID");

此库中的符号相同,只是缺少$ 一开始,我觉得根本没有必要。

殷建弼
2023-03-14

有可能(json路径:2.4.0):

JsonPath.parse(json).read("$.sessionID", Long.class);

查看更多:https://github.com/json-path/JsonPath#what-is-returned-when

 类似资料:
  • 问题内容: 我试图从罐子内的另一个类读取罐子内的文件。但是,我不断收到相同的错误:尝试读取度量标准时,捕获了类java.io.FileNotFoundException:metrics.yml 首先,让我的代码做这样的事情,假设它来自类的路径: 我还假设它可能会从罐子的底部开始移动,所以我也这样做了: 然后我注意到了这个线程。如何从Java的jar中读取文件?并发现我需要在路径前加一个“ /”。我

  • 问题内容: 我得到以下代码: 当我运行此代码时,扫描仪将仅选择名字而不是姓氏。并且有时在尝试输入名称时会跳过一行,它会显示出来,好像我将名称留空并跳到下一个名称一样。我不知道是什么原因造成的。 我希望有一个人可以帮助我! 编辑:我试过in.nextLine(); 它修复了全名,但仍然保留一行,这是输出示例: 问题答案: 代替: 用: 读取字符,直到找到换行符

  • OutFile "REG_MULTI_SZ_Reader.exe" Name "REG_MULTI_SZ Reader" ShowInstDetails show !define HKEY_CLASSES_ROOT 0x80000000 !define HKEY_CURRENT_USER 0x80000001 !define HKEY_LOCAL_MACHINE

  • 我收到错误: 错误类型错误: 无法读取在评估 (webpack-internal:///./node_modules/@angular/common/esm5/http.js:163) 处未定义的属性 “长度”在 Array.forEach () 在 httpHeaders.lazyInit (webpack-internal:///./node_modules/@angular/common/e

  • 在Java(任何库)中,从像下面这样的json开始(具有嵌套字段、数组和嵌入文档): 然后应用以下jsonpath(作为示例,理想情况下是任何类型的jsonpath) 创建如下所示的json文档: 所以问题是:使用jsonpath不仅可以获取数据,还可以获取所有嵌套字段,并创建一个新的json作为输入的子集? 任何例子都像往常一样受到赞赏 注意:在对此进行了大量思考之后,我得出的结论是,我需要的是

  • 尝试使用< code>getAuth请求来存储令牌。请求不调用API并抛出错误。 TypeError:无法在HttpHeaders.push处读取undefined的属性(读取“length”)../node _ modules/@ angular/common/Fe sm5/http . js . http headers . apply update(http . js:199)at http