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;
{
"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;