一、我们有一个JSON文件,如下:

  1. {
  2. "在野": [
  3. {
  4. "城池": 0,
  5. "武将": 74,
  6. "登场年": 190
  7. },
  8. {
  9. "城池": 0,
  10. "武将": 11,
  11. "登场年": 208
  12. },
  13. {
  14. "城池": 29,
  15. "武将": 78,
  16. "登场年": 198
  17. }
  18. ],
  19. "跟随": [
  20. {
  21. "父将": 182,
  22. "子将": 176,
  23. "登场年": 197
  24. },
  25. {
  26. "父将": 222,
  27. "子将": 224,
  28. "登场年": 199
  29. }
  30. ]
  31. }

二、我们读取“在野”,代码如下:

  1. //读取JSON文件内容
  2. procedure TForm1.Button1Click(Sender: TObject);
  3. var
  4. m_Json, m_Json_Item: TJSONObject;
  5. m_StringStream: TStringStream;
  6. m_JsonArr: TJSONArray;
  7. I: Integer;
  8. begin
  9. m_StringStream := TStringStream.Create('', TEncoding.UTF8);
  10. m_StringStream.LoadFromFile(Edit1.Text);
  11. m_Json := TJSONObject.Create;
  12. m_Json := TJSONObject.ParseJSONValue(m_StringStream.DataString) as TJSONObject;
  13. m_JsonArr := m_Json.Values['在野'] as TJSONArray;
  14. // 第10个
  15. for I := to m_JsonArr.Count - do
  16. begin
  17. m_Json_Item := m_JsonArr.Items[I] as TJSONObject;
  18. Memo1.Lines.Add(Format('武将: %s ,登场年: %s ', [m_Json_Item.Values['武将'].Value, m_Json_Item.Values['登场年'].Value]));
  19. end;
  20. end;
  21.  
  22. //修改JSON文件内容
  23. procedure TForm1.Button2Click(Sender: TObject);
  24. var
  25. m_Json, m_Json_Item: TJSONObject;
  26. m_StringStream: TStringStream;
  27. m_JsonArr: TJSONArray;
  28. begin
  29. m_StringStream := TStringStream.Create('', TEncoding.UTF8);
  30. m_StringStream.LoadFromFile(Edit1.Text);
  31.  
  32. //读取JSON
  33. m_Json := TJSONObject.Create;
  34. m_Json := TJSONObject.ParseJSONValue(m_StringStream.DataString) as TJSONObject;
  35. m_JsonArr := m_Json.Values['在野'] as TJSONArray;
  36.  
  37. // 修改JSON数组内容
  38. m_Json_Item := m_JsonArr.Items[] as TJSONObject;
  39. m_Json_Item.RemovePair('武将');
  40. m_Json_Item.AddPair('武将', '');
  41. m_Json_Item.RemovePair('登场年');
  42. m_Json_Item.AddPair('登场年', '');
  43.  
  44. //保存到文件
  45. m_StringStream.Clear;
  46. m_StringStream.WriteString(m_Json.ToString);
  47. m_StringStream.SaveToFile(Edit1.Text);
  48. end;

三、效果如下:

不忘初心,如果您认为这篇文章有价值,认同作者的付出,可以微信二维码打赏任意金额给作者(微信号:382477247)哦,谢谢。

八、Delphi10.3读取JSON文件,并修改JSON数组一条内容后保存到文件的更多相关文章

  1. 【Python】将对象存成json文件及从json取出对象

    常用代码,单拎出来以备查. 对象存json文件: import json obj={'name':'张有财','age':39,'arr':[2,34,5,6,7,88,'李有钱']} with op ...

  2. Java读取json文件并对json数据进行读取、添加、删除与修改操作

    转载:http://blog.csdn.net/qing_yun/article/details/46865863#t0   1.介绍 开发过程中经常会遇到json数据的处理,而单独对json数据进行 ...

  3. php读取excel文件 更新修改excel

    php读取excel文件示例,还有更新修改功能. 代码: //模板存放目录 $dir = $DOCUMENT_ROOT.'/backoffice/admin/oemcheck/'; $template ...

  4. java读取url中json文件中的json数据

    有时候需要远程从其他接口中获取json数据,如果遇到返回的json数据是一个文件而不直接是数据,那么可以通过以下方法进行读取: /** * 从数据接口获取到数据 * @return * @throws ...

  5. JsonResult序列化并保存json文件 以及对json文件读取反序列

    项目中我们经常遇到一些经常访问的接口,并且更新及时度不是特别高,那么我们可以利用文件来做一些数据请求的缓存. 这里以微信公众号获取粉丝用户列表为例,我们把微信公众号查到的用户先缓存在文件中,这样在翻页 ...

  6. 从接口自动化测试框架设计到开发(二)操作json文件、重构json工具类

    用例模板里的请求数据多,看起来很乱,所以可以通过访问另外一个文件的方式获取请求数据 把请求数据都放在一个json文件中 取出login的内容: import json fp = open('G:/un ...

  7. java读取txt文件的2中方法---并将内容(每一行以固定的字符分割切成2段)存到map中去

    #java读取txt文件的第一种方法 /** * 方法:readTxt * 功能:读取txt文件并把txt文件的内容---每一行作为一个字符串加入到List中去 * 参数:txt文件的地址 * 返回: ...

  8. Java读取Excel文件转换成JSON并转成List——(七)

    Jar包

  9. POI 读取Excel文件 并解析JSON数据

    package skuPrice; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundEx ...

随机推荐

  1. IELTS Writing Task 2: 'music' essay

    IELTS Writing Task 2: 'music' essay Here's my band 9 sample answer for the question below. Some peop ...

  2. STM32 RTC上的唤醒和闹钟

    RTC很简单只要给备用电,RTC就会不停,可以进行设置和读时间.同时在RTC上也涉及了闹钟(EXTI_17:RTC_FLAG_ALRAF,相当于RTC的定时器,闹钟到了之后进行异步操作)和唤醒中断(低 ...

  3. Linux命令:yum命令

    YUM: Yellowdog Update Modifier,rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具 一.yum命令用法 yum repolist ...

  4. 调用天气预报webservice接口

    1.将 服务端的wsdl文档保存至 本地 http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?WSDL 2.将里面的 <s:element re ...

  5. js中for循环(原生js)

    1,普通for循环,经常用的数组遍历 var arr = [1,2,3,4,5]; for ( var i = 0; i <arr.length; i++){ console.log(arr[i ...

  6. JS拖拽-面向对象拖拽-继承

    //普通拖拽 /* * CSS */ #div1{ width:100px; height:100px; position:absolute; background:red; cursor:move; ...

  7. CSS - 滑动门技术

    1. 概念: 1.1 为了使各种特殊形状的背景能够自适应元素中文本内容的多少,出现了CSS滑动门技术. 1.2 使各种特殊形状的背景能够自由拉伸滑动,以适应元素内部的文本内容,可用性更强. 1.3 最 ...

  8. FLASK - 请求和响应

    请求都封装在request对象里面了 from flask import Flask from flask import request from flask import render_templa ...

  9. 笔记||Pyhthon3进阶之多线程操作共享数据

    # 多线程操作共享数据--------------------------------------------------------------- # import threading# 使用锁# ...

  10. Golang 如何交叉编译

    Golang 支持交叉编译,即在一个平台上生成另一个平台的可执行程序.方法如下: Mac 下编译 Linux 和 Windows 64位可执行程序 CGO_ENABLED=0 GOOS=linux G ...