ben79cn 2024-04-02 12:34 采纳率: 0%
浏览 5
已结题

jsonPath如何parse后还保留末尾0

String json = "{"name":"Tom", "age":25.00, "score":"48.56"}";
通过jsonPath "$.age"获取到25.00而不是25.0,如果json是String json = "{"name":"Tom", "age":25.000, "score":"48.56"}"; 则取到25.000,一句话就是不要随意改变原数字,支持任何jsonPath

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-02 12:34
    关注

    引自免费微信小程序:皆我百晓生

    在Java中,JSON路径(JSON Path)是一种表达式方法,它允许我们在JSON字符串中查找、选择或更新特定的对象或字段。

    在你的例子中,我们想要提取json中的第二个值(即年龄),也就是$.age。然而,当我们试图访问第二个元素时,结果却是一个数字,而不是我们期望的结果。

    这是因为,虽然Java中的JSON类可以解析 JSON 字符串,并返回 JSON 对象的引用,但是 JSON 对象本身并没有第二层属性。因此,我们需要通过 JSON Path 来访问和操作这些属性。

    要解决这个问题,我们可以创建一个 JSON 对象,并将其赋值给变量 jsonObj

    String json = "{\"name\":\"Tom\", \"age\":25.00, \"score\":\"48.56\"}";
    JSONObject jsonObj = new JSONObject(json);
    

    然后,我们可以使用 JSON Path 来访问第二个属性(在这种情况下是年龄):

    double age = jsonObj.getDouble("age");
    

    这个解冑给出了正确的年龄值。

    关于你的问题中的提问部分,JSON对象并不会改变原数字,如果你尝试修改 JSON 对象的某个属性(比如 score 属性),那么在新的数据加载后,这个属性的值将不再是原始的值。如果你需要更精确地控制属性的值,你需要在创建 JSON 对象时指定其格式。

    此外,你需要确保你的JSON路径是从JSON对象的根开始的,而不是从某些其他对象开始的。这可以通过使用JavaScript的JSON.parse()函数来实现,这样就可以避免尝试访问未定义的对象属性。例如:

    String json = "{\"name\":\"Tom\", \"age\":25.00, \"score\":\"48.56\"}";
    JSONObject jsonObj = JSON.parse(json);
    double age = jsonObj.getDouble("age");
    

    这里,我们使用了JSON.parse()函数将JSON字符串转换为JSON对象。然后,我们可以像访问其他对象属性一样访问这个年龄值。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月13日
  • 创建了问题 4月2日

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看