Delphi解析修改Json文件,基于superobject.pas(ISuperObject)
<p>在经过一系列的波折后,还是觉得delphi读取并修改json文件来的方便;</p><p>在网络上找到一个delphi的三方库ISuperObject,添加到项目后直接引用就行;</p>
<p><strong>下载地址</strong></p>
<p><em>ISuperObject中几个常用的函数:</em></p>
<ul>
<li><em><span style="color: rgba(0, 128, 0, 1)">function <strong>SO</strong>(const s: SOString = ‘{}’): ISuperObject; overload; 此函数传入json数据字符串,并返回一个ISuperObject对象,这一般是我们解析json时使用的第一个函数,如jObj := SO(jsonstr)。</span></em></li>
<li><em><span style="color: rgba(0, 128, 0, 1)">property <strong>O</strong>: ISuperObject read GetO write PutO; default; 如:jobj.O[‘username’],此函数被一个ISuperObject对象调用,方括号内的字符串为json中的字段名称,返回一个ISuperObject对象。</span></em></li>
<li><em><span style="color: rgba(0, 128, 0, 1)">property <strong>S</strong>: SOString read GetS write PutS; </span><span style="color: rgba(0, 128, 0, 1)">此函数被一个ISuperObject对象调用,和O[‘username’]不同的是,它返回的是一个SoString,即一个字符串,使用方法 str := jObj.S[‘username’]; 同理的还有其他几个类似的函数,如I[‘age’]返回整数,B[‘isenable’]返回布尔型,A[‘users’]返回一个TSuperArray数组</span></em></li>
<li><em><span style="color: rgba(0, 128, 0, 1)"><strong>AsString, AsBoolean, AsInteger,AsArray</strong>,ISuperObject的函数,用来把ISuperObject转换成相应的数据类型。</span></em></li>
</ul>
<p><span style="color: rgba(0, 0, 0, 1)">演示代码:</span></p>
<p> </p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">读取json文件</span>
<span style="color: rgba(0, 0, 255, 1)">procedure</span><span style="color: rgba(0, 0, 0, 1)"> TForm2.Button1Click(Sender: TObject);
</span><span style="color: rgba(0, 0, 255, 1)">var</span><span style="color: rgba(0, 0, 0, 1)">
rText: TextFile;
tmp: UTF8String;
</span><span style="color: rgba(0, 0, 255, 1)">begin</span><span style="color: rgba(0, 0, 0, 1)">
AssignFile(rText, </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">C:\Users\admin\Desktop\F.txt</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">);
reset(rText);
</span><span style="color: rgba(0, 0, 255, 1)">while</span> <span style="color: rgba(0, 0, 255, 1)">not</span> EOF(rText) <span style="color: rgba(0, 0, 255, 1)">do</span>
<span style="color: rgba(0, 0, 255, 1)">begin</span><span style="color: rgba(0, 0, 0, 1)">
readln(rText, tmp);
Res :</span>= Res +<span style="color: rgba(0, 0, 0, 1)"> tmp;
</span><span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;
closefile(rText);
Memo1.Lines.Add(Res);
application.MessageBox(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">加载成功!</span><span style="color: rgba(128, 0, 0, 1)">'</span>, <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">提示</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">, MB_OK);
</span><span style="color: rgba(0, 0, 255, 1)">end</span>;</pre>
</div>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">处理JSON字符串,按照固定结构读取</span>
<span style="color: rgba(0, 0, 255, 1)">procedure</span><span style="color: rgba(0, 0, 0, 1)"> TForm2.Button2Click(Sender: TObject);
</span><span style="color: rgba(0, 0, 255, 1)">var</span><span style="color: rgba(0, 0, 0, 1)">
jRet, jUsers: ISuperObject;
aryUsers: TSuperArray;
gridStartTime, gridEndTime, resultStartTime, resultEndTime, WindSpeedBorder,
WindDirectBorder: </span><span style="color: rgba(0, 0, 255, 1)">string</span><span style="color: rgba(0, 0, 0, 1)">;
po, pof, poh, posp: Tpoint;
num, count, I, J: integer;
aryers, arrline, arrbar, arrspeed: TSuperArray;
Tlist: TStringlist;
</span><span style="color: rgba(0, 0, 255, 1)">begin</span><span style="color: rgba(0, 0, 0, 1)">
jRet:</span>=TSuperObject.<span style="color: rgba(0, 0, 255, 1)">Create</span><span style="color: rgba(0, 0, 0, 1)">(stObject);
Tlist :</span>= TStringlist.<span style="color: rgba(0, 0, 255, 1)">Create</span><span style="color: rgba(0, 0, 0, 1)">;
Tlist.Delimiter :</span>= <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">,</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
jRet :</span>=<span style="color: rgba(0, 0, 0, 1)"> SO(Res);
gridStartTime :</span>= jRet.O[<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">gridStartTime</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">].AsString();
Memo1.Lines.Add(gridStartTime);
gridEndTime :</span>= jRet.O[<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">gridEndTime</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">].AsString();
Memo1.Lines.Add(gridEndTime);
resultStartTime :</span>= jRet.O[<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">resultStartTime</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">].AsString();
Memo1.Lines.Add(resultStartTime);
resultEndTime :</span>= jRet.O[<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">resultEndTime</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">].AsString();
Memo1.Lines.Add(resultEndTime);
WindSpeedBorder :</span>= jRet.O[<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">WindSpeedBorder</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">].AsString();
Memo1.Lines.Add(WindSpeedBorder);
WindDirectBorder :</span>= jRet.O[<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">WindDirectBorder</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">].AsString();
Memo1.Lines.Add(WindDirectBorder);
aryers :</span>= jRet.O[<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">WindDirectLine</span><span style="color: rgba(128, 0, 0, 1)">'</span>].O[<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">coordinates</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">].AsArray();
count :</span>=<span style="color: rgba(0, 0, 0, 1)"> aryers.Length;
</span><span style="color: rgba(0, 0, 255, 1)">for</span> I := <span style="color: rgba(128, 0, 128, 1)">0</span> <span style="color: rgba(0, 0, 255, 1)">to</span> count - <span style="color: rgba(128, 0, 128, 1)">1</span> <span style="color: rgba(0, 0, 255, 1)">do</span>
<span style="color: rgba(0, 0, 255, 1)">begin</span><span style="color: rgba(0, 0, 0, 1)">
arrline :</span>= aryers.O[<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">mWindDirectBaseLine</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">].AsArray();
</span><span style="color: rgba(0, 0, 255, 1)">for</span> J := <span style="color: rgba(128, 0, 128, 1)">0</span> <span style="color: rgba(0, 0, 255, 1)">to</span> arrline.Length - <span style="color: rgba(128, 0, 128, 1)">1</span> <span style="color: rgba(0, 0, 255, 1)">do</span>
<span style="color: rgba(0, 0, 255, 1)">begin</span>
<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> Tlist.DelimitedText := arrline.O['p'].AsString();</span>
<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> po:=point(strtoint(Tlist),strtoint(Tlist));</span>
Memo1.Lines.Add(arrline.O[<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">p</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">].AsString());
</span><span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;
arrbar :</span>= aryers.O[<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">mWindDirectBars</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">].AsArray();
</span><span style="color: rgba(0, 0, 255, 1)">for</span> J := <span style="color: rgba(128, 0, 128, 1)">0</span> <span style="color: rgba(0, 0, 255, 1)">to</span> arrbar.Length - <span style="color: rgba(128, 0, 128, 1)">1</span> <span style="color: rgba(0, 0, 255, 1)">do</span>
<span style="color: rgba(0, 0, 255, 1)">begin</span>
<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> Tlist.DelimitedText := arrbar.O['f'].O['p'].AsString();</span>
<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> pof:=point(strtoint(Tlist),strtoint(Tlist));</span>
<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> Tlist.DelimitedText := arrbar.O['h'].O['p'].AsString();</span>
<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> poh:=point(strtoint(Tlist),strtoint(Tlist));</span>
Memo1.Lines.Add(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">f: </span><span style="color: rgba(128, 0, 0, 1)">'</span> + arrbar.O[<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">f</span><span style="color: rgba(128, 0, 0, 1)">'</span>].O[<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">p</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">].AsString()
</span>+ <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)"> h: </span><span style="color: rgba(128, 0, 0, 1)">'</span> + arrbar.O[<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">h</span><span style="color: rgba(128, 0, 0, 1)">'</span>].O[<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">p</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">].AsString());
</span><span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;
aryers :</span>= jRet.O[<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">WindSpeedLine</span><span style="color: rgba(128, 0, 0, 1)">'</span>].O[<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">coordinates</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">].AsArray();
count :</span>=<span style="color: rgba(0, 0, 0, 1)"> aryers.Length;
</span><span style="color: rgba(0, 0, 255, 1)">for</span> I := <span style="color: rgba(128, 0, 128, 1)">0</span> <span style="color: rgba(0, 0, 255, 1)">to</span> count - <span style="color: rgba(128, 0, 128, 1)">1</span> <span style="color: rgba(0, 0, 255, 1)">do</span>
<span style="color: rgba(0, 0, 255, 1)">begin</span><span style="color: rgba(0, 0, 0, 1)">
arrspeed :</span>=<span style="color: rgba(0, 0, 0, 1)"> aryers.AsArray();
</span><span style="color: rgba(0, 0, 255, 1)">for</span> J := <span style="color: rgba(128, 0, 128, 1)">0</span> <span style="color: rgba(0, 0, 255, 1)">to</span> arrspeed.Length - <span style="color: rgba(128, 0, 128, 1)">1</span> <span style="color: rgba(0, 0, 255, 1)">do</span>
<span style="color: rgba(0, 0, 255, 1)">begin</span>
<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> Tlist.DelimitedText := arrspeed.O['p'].AsString();</span>
<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> posp:=point(strtoint(Tlist),strtoint(Tlist));</span>
Memo1.Lines.Add(arrspeed.O[<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">p</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">].AsString());
</span><span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;
application.MessageBox(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">处理完成!</span><span style="color: rgba(128, 0, 0, 1)">'</span>, <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">提示</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">, MB_OK);
</span><span style="color: rgba(0, 0, 255, 1)">end</span>;</pre>
</div>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">修改JSON文件并保存</span>
<span style="color: rgba(0, 0, 255, 1)">procedure</span><span style="color: rgba(0, 0, 0, 1)"> TForm2.Button3Click(Sender: TObject);
</span><span style="color: rgba(0, 0, 255, 1)">var</span><span style="color: rgba(0, 0, 0, 1)">
jfields, jitems, jo, jRet: ISuperObject;
date: </span><span style="color: rgba(0, 0, 255, 1)">string</span><span style="color: rgba(0, 0, 0, 1)">;
num, count, I, J: integer;
txt:TextFile;
aryers, arrline, arrbar, arrspeed: TSuperArray;
</span><span style="color: rgba(0, 0, 255, 1)">begin</span><span style="color: rgba(0, 0, 0, 1)">
jRet :</span>=<span style="color: rgba(0, 0, 0, 1)"> SO(Res);
</span><span style="color: rgba(0, 0, 255, 1)">if</span> jRet = <span style="color: rgba(0, 0, 255, 1)">nil</span> <span style="color: rgba(0, 0, 255, 1)">then</span><span style="color: rgba(0, 0, 0, 1)">
application.MessageBox(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">读取失败!</span><span style="color: rgba(128, 0, 0, 1)">'</span>, <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">提示</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">, MB_OK);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">date := FormatDateTime('yyyy-MM-dd hh:nn:ss', Now());</span>
jRet.S[<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">gridStartTime</span><span style="color: rgba(128, 0, 0, 1)">'</span>] :=<span style="color: rgba(0, 0, 0, 1)"> date;
jRet.S[</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">gridEndTime</span><span style="color: rgba(128, 0, 0, 1)">'</span>] :=<span style="color: rgba(0, 0, 0, 1)"> date;
jRet.S[</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">resultStartTime</span><span style="color: rgba(128, 0, 0, 1)">'</span>] :=<span style="color: rgba(0, 0, 0, 1)"> date;
jRet.S[</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">resultEndTime</span><span style="color: rgba(128, 0, 0, 1)">'</span>] :=<span style="color: rgba(0, 0, 0, 1)"> date;
jRet.S[</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">WindSpeedBorder</span><span style="color: rgba(128, 0, 0, 1)">'</span>] :=<span style="color: rgba(0, 0, 0, 1)"> date;
jRet.S[</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">WindDirectBorder</span><span style="color: rgba(128, 0, 0, 1)">'</span>] :=<span style="color: rgba(0, 0, 0, 1)"> date;
jRet.I[</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">gridMethod</span><span style="color: rgba(128, 0, 0, 1)">'</span>]:=<span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">;
count:</span>=jRet.O[<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">WindDirectLine</span><span style="color: rgba(128, 0, 0, 1)">'</span>].A[<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">coordinates</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">].Length;
</span><span style="color: rgba(0, 0, 255, 1)">for</span> I := <span style="color: rgba(128, 0, 128, 1)">0</span> <span style="color: rgba(0, 0, 255, 1)">to</span> count - <span style="color: rgba(128, 0, 128, 1)">1</span> <span style="color: rgba(0, 0, 255, 1)">do</span>
<span style="color: rgba(0, 0, 255, 1)">begin</span><span style="color: rgba(0, 0, 0, 1)">
num:</span>= jRet.O[<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">WindDirectLine</span><span style="color: rgba(128, 0, 0, 1)">'</span>].A[<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">coordinates</span><span style="color: rgba(128, 0, 0, 1)">'</span>].A[<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">mWindDirectBaseLine</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">].Length;
</span><span style="color: rgba(0, 0, 255, 1)">for</span> J := <span style="color: rgba(128, 0, 128, 1)">0</span> <span style="color: rgba(0, 0, 255, 1)">to</span> num - <span style="color: rgba(128, 0, 128, 1)">1</span> <span style="color: rgba(0, 0, 255, 1)">do</span>
<span style="color: rgba(0, 0, 255, 1)">begin</span><span style="color: rgba(0, 0, 0, 1)">
jRet.O[</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">WindDirectLine</span><span style="color: rgba(128, 0, 0, 1)">'</span>].A[<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">coordinates</span><span style="color: rgba(128, 0, 0, 1)">'</span>].A[<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">mWindDirectBaseLine</span><span style="color: rgba(128, 0, 0, 1)">'</span>].S[<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">p</span><span style="color: rgba(128, 0, 0, 1)">'</span>]:=inttostr(I)+<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)"> ,</span><span style="color: rgba(128, 0, 0, 1)">'</span>+<span style="color: rgba(0, 0, 0, 1)">inttostr(J);
</span><span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;
Assignfile(txt,</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">E:\p.gal</span><span style="color: rgba(128, 0, 0, 1)">'</span>);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">指定文件路径</span>
rewrite(txt); <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">创建并打开一个新文件(或覆盖原有文件)</span>
<span style="color: rgba(0, 0, 0, 1)">Writeln(txt,jRet.AsString());
Closefile(txt); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">关闭打开的文件</span>
<span style="color: rgba(0, 0, 0, 1)">
application.MessageBox(Pchar(jRet.O[</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">gridStartTime</span><span style="color: rgba(128, 0, 0, 1)">'</span>].AsString()), <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">提示</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">, MB_OK);
</span><span style="color: rgba(0, 0, 255, 1)">end</span>;</pre>
</div>
<p><strong><span style="color: rgba(255, 0, 0, 1)">注意:</span></strong></p>
<ul>
<li><span style="color: rgba(0, 128, 0, 1)">读取文件时如果json文件中包含中文格式,那么在读取时必须保证为获取字段为UTF8String类型。</span></li>
<li><span style="color: rgba(0, 128, 0, 1)"> jRet.O['WindSpeedLine'].A['coordinates'].AsArray().add(jo);//对与数组嵌套的json,可以通过这种方式添加。</span></li>
<li><span style="color: rgba(0, 128, 0, 1)">读取或者声明的jo := SO();不能用clear()清空,否则add(jo)就会成为空数据。</span></li>
</ul>
<p><strong><span style="color: rgba(255, 0, 0, 1)"><span style="color: rgba(0, 128, 0, 1)"> </span></span></strong></p>
<p> </p><br><br>
来源:https://www.cnblogs.com/motao9527/p/10830725.html
頁:
[1]