JSON 文件 - Java:编辑/更新字段值

2023-11-25

我的工作流程中有一些 JSONObject,并且通过将它们写入 json 文件来存储相同的 JSONObject。

我想要一种有效的方法来更新 json 文件,仅在需要的字段,包含较新的 JSONObjects 实例的内容。

Eg:

我的档案里有

ObjectOnFile = {key1:val1, key2:val2,...}

记忆中我有

ObjectInMemory = {key1:val1_newer, key2:val2_newer,...}

更新将类似于:

 if (!(ObjectInMemory.get(key1).equals(ObjectOnFile.get(key1)))
       // update file field value <--- how to?

一般来说,我想更新每个键的值,其内容较新(不同)。

实际上我的代码是:

import org.json.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;

ObjectMapper mapper = new ObjectMapper();
Sting key = "key1"; //whatever
JSONObject jo = new JSONObject("{key1:\"val1\", key2:\"val2\"}");
JSONObject root = mapper.readValue(new File(json_file), JSONObject.class);
JSONObject val_newer = jo.getJSONObject(key);
JSONObject val_older = root.getJSObject(key);
if(!val_newer.equals(val_older)){
   root.put(key,val_newer);
/*write back root to the json file...how? */
}

简单地你可以这样做:

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

import org.json.JSONException;
import org.json.JSONObject;

import com.fasterxml.jackson.databind.ObjectMapper;


public class Test {

    public static void main(String[] args) throws JSONException, IOException 
    {
        ObjectMapper mapper = new ObjectMapper();
        String key = "key1"; //whatever

        JSONObject jo = new JSONObject("{key1:\"val1\", key2:\"val2\"}");
        //Read from file
        JSONObject root = mapper.readValue(new File("json_file"), JSONObject.class);

        String val_newer = jo.getString(key);
        String val_older = root.getString(key);

        //Compare values
        if(!val_newer.equals(val_older))
        {
          //Update value in object
           root.put(key,val_newer);

           //Write into the file
            try (FileWriter file = new FileWriter("json_file")) 
            {
                file.write(root.toString());
                System.out.println("Successfully updated json object to file...!!");
            }
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JSON 文件 - Java:编辑/更新字段值 的相关文章

  • 如何在android上的python kivy中关闭应用程序后使服务继续工作

    我希望我的服务在关闭应用程序后继续工作 但我做不到 我听说我应该使用startForeground 但如何在Python中做到这一点呢 应用程序代码 from kivy app import App from kivy uix floatl
  • 如何创建一个显示 Spinners 的 x 和 y 值的表格?

    我想创建一个位于图表右侧的表格 其中显示 2 列 x 和 y 值已输入到xSpin and ySpin旋转器 我已经画了一张我想要桌子放置的位置的图 我尝试过在网格窗格布局中使用文本框来创建表格并将值直接输入到文本框网格中 但是我无法将它们
  • 使用 JPA Criteria API 进行分页的总行数

    我正在系统中为实体实现 高级搜索 功能 以便用户可以使用该实体的属性上的多个条件 eq ne gt lt 等 来搜索该实体 我正在使用 JPA 的 Criteria API 动态生成 Criteria 查询 然后使用setFirstResu
  • org.apache.sling.api.resource,version=[2.3,3) -- 无法解析

    您好 我无法访问我的项目内容 我已经上传了从 CQ 访问内容所需的所有包 我唯一能看到的是 org apache sling api resource version 2 3 3 无法解析 这是否是异常的原因 如果是 请告诉我如何解决 中Q
  • 正则表达式拆分数字和字母组,不带空格

    如果我有一个像 11E12C108N 这样的字符串 它是字母组和数字组的串联 如何在中间没有分隔符空格字符的情况下分割它们 例如 我希望分割结果为 tokens 0 11 tokens 1 E tokens 2 12 tokens 3 C
  • 如何使用 Java 处理 Selenium WebDriver 中的新窗口?

    这是我的代码 driver findElement By id ImageButton5 click Thread sleep 3000 String winHandleBefore driver getWindowHandle drive
  • 比较两个文本文件的最快方法是什么,不将移动的行视为不同

    我有两个文件非常大 每个文件有 50000 行 我需要比较这两个文件并识别更改 然而 问题是如果一条线出现在不同的位置 它不应该显示为不同的 例如 考虑这个文件A txt xxxxx yyyyy zzzzz 文件B txt zzzzz xx
  • java中如何连接字符串

    这是我的字符串连接代码 StringSecret java public class StringSecret public static void main String args String s new String abc s co
  • 运行具有外部依赖项的 Scala 脚本

    我在 Users joe scala lib 下有以下 jar commons codec 1 4 jar httpclient 4 1 1 jar httpcore 4 1 jar commons logging 1 1 1 jar ht
  • 在 S3 中迭代对象时出现“ConnectionPoolTimeoutException”

    我已经使用 aws java API 一段时间了 没有遇到太多问题 目前我使用的是库 1 5 2 版本 当我使用以下代码迭代文件夹内的对象时 AmazonS3 s3 new AmazonS3Client new PropertiesCred
  • 在 Netbeans 8 上配置 JBoss EAP 的问题

    我已经下载了 JBoss EAP 7 并正在 Netbeans 8 上配置它 我已经到达向导 实例属性 其中要求从选择框中选择 域 当我打开选择框时 它是空的 没有什么可以选择的 因此 完成 按钮也处于非活动状态 这使得无法完成配置 我通过
  • 具有 java XSLT 扩展的数组

    我正在尝试使用 java 在 XSLT 扩展中使用数组 我收到以下错误 Caused by java lang ClassCastException org apache xpath objects XObject cannot be ca
  • Java 中的“Lambdifying”scala 函数

    使用Java和Apache Spark 已用Scala重写 面对旧的API方法 org apache spark rdd JdbcRDD构造函数 其参数为 AbstractFunction1 abstract class AbstractF
  • 很好地处理数据库约束错误

    再一次 它应该很简单 我的任务是在我们的应用程序的域对象中放置一个具有唯一约束的特定字段 这本身并不是一个很大的挑战 我刚刚做了以下事情 public class Location more fields Column unique tru
  • 如何知道抛出了哪个异常

    我正在对我们的代码库进行审查 有很多这样的陈述 try doSomething catch Exception e 但我想要一种方法来知道 doSomething 抛出了哪个异常 在 doSomething 的实现中没有 throw 语句
  • 测试弱引用

    在 Java 中测试弱引用的正确方法是什么 我最初的想法是执行以下操作 public class WeakReferenceTest public class Target private String value public Targe
  • Cucumber Java 与 Spring Boot 集成 - Spring @Autowired 抛出 NullPointer 异常

    我正在为 Spring boot 应用程序编写 cucumber java 单元测试来测试每个功能 当我与 Spring Boot 集成时 Autowired 类抛出 NullPointer 异常 Spring Boot应用程序类 Spri
  • 为什么这个作业不起作用?

    我有课Results which extends ArrayList
  • 如何使用 JSch 将多行命令输出存储到变量中

    所以 我有一段很好的代码 我很难理解 它允许我向我的服务器发送命令 并获得一行响应 该代码有效 但我想从服务器返回多行 主要类是 JSch jSch new JSch MyUserInfo ui new MyUserInfo String
  • GUI Java 程序 - 绘图程序

    我一直试图找出我的代码有什么问题 这个想法是创建一个小的 Paint 程序并具有红色 绿色 蓝色和透明按钮 我拥有我能想到的让它工作的一切 但无法弄清楚代码有什么问题 该程序打开 然后立即关闭 import java awt import

随机推荐

  • 将图像分割成更小的图像的算法,减少空白量并指定最大矩形量

    我正在寻找一种算法 可以将图像分割成更小的图像 但有一些限制 一个限制是使用最少量的 空白 即空像素 另一个是指定将其分割成的最大图像数量 例如 让我们看一下下图 其中有很多 空白 我想将此图像分成几个其他图像 这样我就可以减少该图像占用的
  • 如何在Android中播放歌曲-phonegap [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 目前不接受答案 一个月前 我开始使用phonegap html5 css3 和jQtouch 我正在开发一个应用程序 我需要在该应用程序中播放声音 我对这项任务有一个严重的问题 首先 我发现
  • asp.net sessionID 在回发时发生变化?

    我正在编写一个在缓存中存储对象的 ASP NET 应用程序 当页面第一次加载时 它会检查缓存中是否有该对象 如果存在 它将使用该对象 如果该对象不存在 它将重新构建它并将其存储在缓存中 由于多个用户可以同时使用此应用程序 因此我尝试将对象存
  • 未对齐的内存访问:是否定义了行为? [复制]

    这个问题在这里已经有答案了 考虑以下代码 include
  • 对“REST”一词及其含义的误解是什么[关闭]

    Closed 这个问题是基于意见的 目前不接受答案 弄清楚什么是真正的 RESTful 应用程序和 或 api 并不总是那么容易 因为对 REpresentational State Transfer 架构风格的含义和范围存在某种误解 最初
  • 计算 MKMapView 中 MKPolygon 的面积

    我只是不知道如何计算 MKMapView 上的面积 有谁解决过这个问题吗 这是我的代码 但它返回太多 func ringArea gt Double var area Double 0 if templocations count gt 2
  • Strapi 路线返回 404 未找到

    我遇到一个问题 API 中的所有路由都返回404 Not found 我跟着从 Docker Hub 拉取部分位于Strapi strapi docker 除了运行图像之外 我所做的是创建一个名为的新内容类型post包含三个字段 如果我尝试
  • 当用户正在编写时,如何在 RichTextBox 中使用不同的颜色为不同的单词着色,并在单击该彩色文本时引发事件

    当用户在富文本框中写入一些单词时 如果该单词与某个特定单词匹配 则该单词的颜色应该自动更改 当用户单击特定的彩色文本时 它应该引发一个事件 鉴于要求 1 用户在 RichTextBox 控件中插入一些文本 2 如果输入的单词是预定义单词列表
  • AngularJS从属性文件中读取

    在 angularJS 中 如何从属性文件中读取值 connection properties url http localhost 8080 user me get GET post POST 应用程序 js var app angula
  • Node.js如何在快速路由中使用socket.io

    在我的 node js 脚本之一中 我尝试在快速路由中使用 socket io 我发现了很多类似的问题 并尝试按照建议实施解决方案 但没有任何结果 可能是因为我对快递路线不了解 我点击了下面的链接 如何在 Node js 的快速路由中使用
  • JSX (React) 中的花括号意味着什么?

    例如 要在反应中设置样式 您可以这样做 var css color red and h1 Hello world h1 为什么第二个代码片段中的 css 需要大括号 大括号是一种特殊的语法 让 JSX 解析器知道它需要将它们之间的内容解释为
  • Javascript 警报和 php 标头

    我遇到了一个小问题 当我得到没有标题的 PHP 脚本时 一切都很好 我收到了 javascript 警报框 但是当我在警报之前使用标题时它不起作用 它按应有的方式重定向我 但没有显示任何框 有人可以帮助我吗 if pkt lt 1 OR u
  • C/C++ 中的任意大小整数

    Question 有没有办法使用 c c 创建任意大小的整数 例如 int main void Int i Int 3 3 bit integer i 1 Represented as 001 Bonus 有没有办法对浮动值执行相同的操作
  • @AppStorage 变量上出现“调用初始化程序时没有完全匹配”错误?

    我收到以下错误 No exact matches in call to initializer on my 应用存储下面的变量 模型 swift class UserSettings ObservableObject AppStorage
  • 如何在 php 中组合 2 个关联数组,以便在所有情况下都不会覆盖任何重复的条目?

    我有两个关联数组 它们有许多相同的内容 所以我想以这样的方式组合这两个数组 如果我有a在数组 1 和a在数组 2 中比在数组 3 中我应该有两个条目a s而不是 1 我尝试过使用 array merge 但如果第二个数组中有任何重复项 它会
  • rmagick 有没有办法转换内存中的图像

    From Rmagick guide 将图像转换为另一种格式 将图像转换为另一种格式就像编写 图像到文件 ImageMagick 使用输出文件名suffix jpg for JPEG gif for GIF for example or p
  • 在 shell 中一行运行多个命令

    说我有一个文件 templates apple我想要 把它放在两个不同的地方 然后 删除原件 So templates apple将被复制到 templates used AND templates inuse然后我想删除原来的 Is cp
  • gdb 中的 是否有问题?

    我有一个仅在 O2 优化中崩溃的应用程序 使用 gcc 4 2 4 编译 当我单步执行代码并到达崩溃的位置并尝试检查该值时 我在 gdb 中得到了 优化后的值 我在互联网上读到这意味着该值存储在寄存器中 我想知道我的崩溃是否可能与某些信息放
  • 您应该能够分配多少内存?

    背景 我正在编写一个处理大量地理数据的 C 程序 并希望一次性加载大块进行处理 我只能使用为 32 位机器编译的应用程序 我正在测试的机器运行 64 位操作系统 Windows 7 并拥有 6 GB 内存 使用 MS VS 2008 我有以
  • JSON 文件 - Java:编辑/更新字段值

    我的工作流程中有一些 JSONObject 并且通过将它们写入 json 文件来存储相同的 JSONObject 我想要一种有效的方法来更新 json 文件 仅在需要的字段 包含较新的 JSONObjects 实例的内容 Eg 我的档案里有