こんばんは。
私は現在、製品WinFlareのクロスプラットフォーム互換バージョンを開発しています。私が直面している問題は、SuperObjectがまだFiremonkeyとクロスプラットフォーム互換ではないということです。どうしても元のバージョンで使っていたのですが、今はWindowsだけではなく、クロスプラットフォーム版を作りたいので面倒です。
DBXJSON
何時間にもわたる調査の結果、私が見つけた唯一のクロスプラットフォームソリューションですが、それは試して対処するのにイライラすることを証明しています。私が見つけたほとんどすべての例は、私の状況に当てはまらないか、複雑すぎて有用なものを光らせることができません。たくさんの議論がありますが、私はSuperObjectでのこのような単純なタスクを理解するのに苦労しています。私は今夜の大部分を、構築に役立つものを見つけるために費やしましたが、私が試したすべてのことで、私は正方に戻りました。
理想的には、SuperObjectを修正したいのですが、OS Xとクロスプラットフォーム互換にする(そしてモバイルスタジオに対応できるようにする)ための知識が不足しています。それについての提案を歓迎しますが、誰もそのような巨大なタスクを実行する時間がないことを想像しているので、DBXJSONが私の唯一の選択肢のようです。
私が扱っているJSONレイアウトはまだ同じです。
{
response: {
ips: [
{
ip: "xxx.xxx.xxx.xxx",
classification: "threat",
hits: xx,
latitude: xx,
longitude: xx,
zone_name: "domain-example1"
},
{
ip: "yyy.yyy.yyy.yyy",
classification: "robot",
hits: yy,
latitude: xx,
longitude: xx,
zone_name: "domain-example2"
}
]
}
result : "success",
msg: null
}
ips
配列には何百もの結果が含まれる可能性があります。配列内のすべての項目を解析して、すべてのlatitude
値を抽出するとします。また、少しの間、それらを配列に出力するつもりであると仮定しましょう。これが私が使用したい種類のコードテンプレートです。
procedure ParseJsonArray_Latitude(SInput : String);
var
i : Integer;
JsonArray : TJsonArray;
Begin
// SInput is the retrieved JSON in string format
{ Extract Objects from array }
for i := 0 to JsonArray.Size-1 do
begin
Array_Latitude[i] := JsonArray.Item[i].ToString;
end;
end;
基本的に、それが言うところ{ Extract Objects from array }
の、私は私の問題を解決するであろうDBXJSONを使用する最も基本的な解決策が欲しいです。明らかに、上記のテンプレートに関連して示した呼び出しは正しくない可能性があります。これらは単に補助として機能するためのものです。JsonArray