在 KTOP 看到有人在問 JSON 物件能否排序。
第一時間想著官方沒有類似 TJSONObject.Sort 的方法,除非再自行加工改寫。
後來看到其他會員回答的排序法,而樓主似乎也不排斥『要自己寫程式』的方式。
內容使用到『泛型物件』和『DBXJSON』,一時手癢,就自己試著玩玩看:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | uses Generics.Collections, SysUtils, DBXJSON; var LDemoJsonObject: TJSONObject; LDict : TDictionary<string, string>; i: Integer; LStr: string; LArray : TArray<string>; begin LDemoJsonObject := TJSONObject.ParseJSONValue('{"z":"Mark","g":"Mary","k":"HULK","a":"SAM"}') as TJSONObject; LDict := TDictionary<string, string>.Create; try for i := 0 to LDemoJsonObject.Size-1 do LDict.Add(LDemoJsonObject.Get(i).JsonString.Value, LDemoJsonObject.Get(i).JsonValue.Value); WriteLn('Disorder...'); for LStr in LDict.Keys do WriteLn(LDict.Items[LStr]); // Sort LArray := LDict.Keys.ToArray; TArray.Sort<string>(LArray); WriteLn('Order...'); LDemoJsonObject := TJSONObject.Create; for LStr in LArray do LDemoJsonObject.AddPair(LStr, LDict.Items[LStr]); WriteLn(LDemoJsonObject.ToString); finally LDict.Free; end; Readln; end. |
執行結果:
上述內容 XE1 以上適用。
See also:
沒有留言:
張貼留言