【问题标题】:How to replace a value of a json file in java如何在java中替换json文件的值
【发布时间】:2013-10-31 11:15:26
【问题描述】:

你好 stackoverflow 的成员,

我需要一些帮助来替换 json 文件中的一行。我尝试使用与替换文本文件中的行相同的方法,但没有成功。

json文件基本上包含以下字符串:

  "id": "TEXT",

我想用“HELLO”替换“TEXT”

我将如何做到这一点,如果有任何用处,我还导入了“json_simple”库。

对此的任何帮助将不胜感激。

谢谢。

【问题讨论】:

  • 您使用的“相同方法”是什么? JSON 文件一个文本文件,因此该方法(可能是String.replace 的某些版本)应该仍然有效!
  • 请显示完整的 JSON 文件和一些关于您正在做什么的代码。

标签: java


【解决方案1】:

您不能像这样替换值。因此,您需要将其从 json 中删除并重新添加。

JSONObject js = new JSONObject(); // Your jsonobject here, this is just a sample
js.remove("id"); // Since you want to replace the value associated with id, remove it
js.put("id", "HELLO"); // add the new value for id

【讨论】:

  • 无需远程,直接更新:js.remove("id");
【解决方案2】:

不用像有人建议的那样使用 JSON 解析器,您可以简单地使用正则表达式:

str = str.replaceAll("(\\s*?\"id\"\\s*?:\\s*?)\"TEXT\",", "$1\"HELLO\"");

如果“TEXT”字符串是您替换的唯一占位符,您可以简单地使用 String replace 方法,这样:

str.replace("\"TEXT\"", "\"HELLO\"");

【讨论】:

  • 如果 json 文件包含 "someval":"\"id\":\"TEXT\"," 怎么办?正则表达式不适合以任何方式解析 json。正则表达式根本无法理解它在哪个上下文中。
【解决方案3】:

试试这个

>     "id": {
>         "type": "String",
>         "value": "TEXT" ...
> 
> JSONObject modifiedjson=new JSONObject();
> modifiedjson.put("type",childobject.get("type"));
> modifiedjson.put("id","HELLO");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 1970-01-01
    相关资源
    最近更新 更多