【问题标题】:Want to add some dynamic values in long json string想在长 json 字符串中添加一些动态值
【发布时间】:2015-06-09 21:28:53
【问题描述】:

我有一个很长的 json 数据。我将它作为一个字符串并使用 http Post 发送它

每次我都必须传递一些唯一值,因此我创建了一些方法来生成唯一值。

下面是部分json数据。

\\\\\\\"timestamp\\\\\\\" : \\\\\\\"2015-01-27 22:55:30.941292+00\\\\\\\" [You can see so many slashes here [four slashes \\\\ are automatically added when i copy paste the json to my intellij]

我创建了一个返回时间戳的方法。

所以我想将它添加为 json 字符串中的变量。我正在这样做。

\\\\\\\"timestamp\\\\\\\" : "+timeStamp+"

但是当我这样做并 httppost 它并打印创建的 json 然后在在线 json 验证器上进行比较时,硬编码的 json 数据和连接变量后生成的数据存在差异。

我用过json美化,去掉斜线或者空格。但不知何故,json数据被扭曲了。

您能否指定我应该如何处理非常长的 json 数据,就像我将提供的 json 数据复制到我的 intellij 时一样。它本身也添加了 \n 和更多的斜线。

另外请在下面提供您的 cmets,我应该如何用这么多斜线连接变量

\\\\\\\"timestamp\\\\\\\" : "+timeStamp+"

【问题讨论】:

    标签: java json getjson


    【解决方案1】:

    JSON 不太适合修改(与任何其他序列化格式一样)。正确的做法是将 JSON 解析为一个对象(可能是某种映射),进行修改并再次创建一个 JSON 字符串。

    如果你真的想避免这一步,你可以使用正则表达式将部分 JSON 字符串替换为新值:

    Pattern pattern = Pattern.compile("(\"timestamp\": )\"[^\"]+\"");
    Matcher matcher = pattern.match(json)
    String newValue = matcher.replaceFirst("\\1\"" + timeStamp + \");
    

    这将替换 timestamp 属性的值,而不是创建像 "key": "value""value" 这样的不合法的 JSON。请注意,时间戳需要以 JSON 格式引用,并且必须具有收件人期望的确切格式 - 收件人不会神奇地理解您认为可能是时间戳的内容。

    【讨论】:

      猜你喜欢
      • 2020-08-26
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多