Delphi json 不带括号的数组

Delphi json array without bracket

{
      "code": 0,
      "data": {
        "KAVAUSDT": {
          "name": "KAVAUSDT",
          "min_amount": "0.5",
          "maker_fee_rate": "0.003",
          "taker_fee_rate": "0.003",
          "pricing_name": "USDT",
          "pricing_decimal": 4,
          "trading_name": "KAVA",
          "trading_decimal": 8
        },
        "CFXUSDT": {
          "name": "CFXUSDT",
          "min_amount": "5",
          "maker_fee_rate": "0.003",
          "taker_fee_rate": "0.003",
          "pricing_name": "USDT",
          "pricing_decimal": 6,
          "trading_name": "CFX",
          "trading_decimal": 8
        },
        ... continue 
      }
    }

如果有[]符号,我可以用TJsonArray快速解决:

...

JsonArray := JsonValue.GetValue<TJSONArray>('data');

for ArrayElement in JsonArray do
begin
  tempName           := ArrayElement.GetValue<String>('name');
  tempPricingName    := ArrayElement.GetValue<String>('pricing_name');   
  ...
end;

此 Json 类型中没有 [] 符号。

没有 [] 符号,我无法访问数据,因为它使用的是 for 循环。

有没有简单的解决方法?

您显示的 JSON 文档中没有数组。 "KAVAUSDT""CFXUSDT" 等不是数组元素,它们只是 "data" 对象的简单命名对象字段。如果您需要遍历 "data" 对象的子字段,您可以使用 TJSONObject(而不是 TJSONArray!),例如:

...

JsonObj := JsonValue.GetValue<TJSONObject>('data');

for Field in JsonObj do
begin
  FieldObj           := Field.JsonValue as TJSONObject;
  tempName           := FieldObj.GetValue<String>('name');
  tempPricingName    := FieldObj.GetValue<String>('pricing_name');   
  ...
end;