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

修改和重写json文件中的密钥

狄阳秋
2023-03-14
public class JsonMain {
    public static void main(String[] args) throws IOException {
        String first = "chatMessage.json";
        String jsonSource = new String((Files.readAllBytes(Paths.get(first))),"UTF-8");
        //print the json file
        System.out.println(jsonSource);

        JSONObject obj = new JSONObject(jsonSource);
        JSONArray arr = new JSONArray(obj.getJSONArray("messages"));

        //iterate trough all the timestamp_ms and get the value
        for(int i=0; i< arr.length(); i++)
        {
            long time = (long)arr.getJSONObject(i).get("timestamp_ms");
            SimpleDateFormat sdf = new SimpleDateFormat();
            sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
            System.out.println(sdf.format(new Date(time)));
            //arr.put("timestamp_ms",sdf.format(new Date(time)));
        }

    }
}

这是json文件chatmessage.json

{
  "participants": [
    {
      "name": "User1"
    },
    {
      "name": "User2"
    }
  ],
  "messages": [
    {
      "sender_name": "User1",
      "timestamp_ms": 1620663455808,
      "content": "Hello ç á à â ã ",
      "type": "Generic",
      "is_unsent": false
    },
    {
      "sender_name": "User2",
      "timestamp_ms": 1620663401347,
      "content": "Hi, how are you?",
      "type": "Generic",
      "is_unsent": false
    },
    {
      "sender_name": "User1",
      "timestamp_ms": 1620662999730,
      "content": "\u00c3\u0089 to utf?",
      "type": "Generic",
      "is_unsent": false
    }
  ],
  "title": "chatTitle",
  "is_still_participant": true,
  "thread_type": "RegularGroup",
  "thread_path": "inbox/chatTitle_4hyfdfnnhw"
}

共有1个答案

乐成济
2023-03-14

你很接近了。

只需要引用JSON消息对象而不是数组,然后重写文件。

您可以执行以下操作:

String first = "chatMessage.json";
String jsonSource = new String((Files.readAllBytes(Paths.get(first))),"UTF-8");
//print the json file
System.out.println(jsonSource);

JSONObject obj = new JSONObject(jsonSource);
JSONArray arr = new JSONArray(obj.getJSONArray("messages"));

//iterate trough all the timestamp_ms and get the value
for(int i=0; i< arr.length(); i++) {
    JSONObject currMessage = arr.getJSONObject(i);
    long time = (long) currMessage.get("timestamp_ms");
    SimpleDateFormat sdf = new SimpleDateFormat();
    sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
    System.out.println(sdf.format(new Date(time)));
    currMessage.put("timestamp_ms", sdf.format(new Date(time)));
}

Files.write(Paths.get(first), obj.toString().getBytes());

String output = new String((Files.readAllBytes(Paths.get(first))),"UTF-8");
System.out.println(output);
{
    "is_still_participant": true,
    "thread_type": "RegularGroup",
    "messages": [{
        "is_unsent": false,
        "sender_name": "User1",
        "timestamp_ms": "10.5.2021, 16:17",
        "type": "Generic",
        "content": "Hello ç á à â ã "
    }, {
        "is_unsent": false,
        "sender_name": "User2",
        "timestamp_ms": "10.5.2021, 16:16",
        "type": "Generic",
        "content": "Hi, how are you?"
    }, {
        "is_unsent": false,
        "sender_name": "User1",
        "timestamp_ms": "10.5.2021, 16:09",
        "type": "Generic",
        "content": "Ã\u0089 to utf?"
    }],
    "title": "chatTitle",
    "thread_path": "inbox/chatTitle_4hyfdfnnhw",
    "participants": [{
        "name": "User1"
    }, {
        "name": "User2"
    }]
}
 类似资料:
  • 我有以下问题: 我在我的Java应用程序中使用算法“RSA/ECB/PKCS1Padding”进行加密和解密。 问候

  • 问题内容: 我试图读取Golang中的JSON文件,修改此JSON文件,然后创建一个新的JSON文件/在此JSON文件上进行覆盖。我在网上看到了几个示例,但似乎无法将两个和两个放在一起以获得所需的结果。我尝试只在GO中创建自己的JSON str并对其进行修改,但仍然失败。 我已经尝试过几次读取文件,以下是我的最佳尝试: 这是一个示例输出: 我只是对如何修改我想要的内容感到困惑,特别是上述示例输出的

  • 问题内容: 我知道您可以使用Newtonsoft轻松地做到这一点。但是,当我使用.NET Core 3.0时,我正在尝试使用新方法与JSON文件进行交互,即,并且我拒绝相信我要做的一切都那么困难! 我的应用程序需要列出尚未添加到我的数据库中的用户。为了获取所有用户的完整列表,该应用程序从Web API检索JSON字符串。现在,我需要循环浏览这些用户中的每一个,并检查是否已将它们添加到我的应用程序中

  • 到目前为止,我处理样式的经验是创建一个style.xml文件,并为样式创建我想要的属性。如果我希望我的样式基于现有的样式,我使用父属性。然后,我在要应用样式的控件上的布局文件中指定样式。 我无所适从的地方是当我想使用系统样式并且只更新某些属性时。我想知道我是否可以离开布局文件单独和不打扰应用任何样式到控件。相反,我会以某种方式更新系统样式的属性,这将更新我的应用程序中默认已经使用该样式的任何地方。

  • 问题内容: 嗨,我正在尝试从json文件中获取数据,然后插入和ID,然后执行POST REST。我的文件data.json具有: 并且我想添加一个id,以便json数据如下所示: 所以我尝试了: 我无法加载json格式文件。我应该怎么做才能将json文件转换为json对象并添加另一个id值。 问题答案: 使用设置项目。

  • 问题内容: 我想修改jar中的文件。是否可以在我的应用程序中执行此操作而无需提取并重新创建? 我要修改的文件是配置文件,主要是基于xml的文件。 我感兴趣的原因是,如果我将其解压缩,则无法再次创建.exe文件。 问题答案: 我想修改中的文件。是否可以在我的应用程序中执行此操作而无需提取并重新创建? 我要修改的文件是配置文件,主要是基于的文件。 我感兴趣的原因是,如果我将其解压缩,则你可以将u选项用