如何在 Delphi 的 TMemo 中组织这个原始字符串?
How to organize this raw string in a TMemo in Delphi?
我这里有一个非常脏的字符串,我需要 Delphi 中的代码来组织它。我的程序总是得到这个脏字符串,看一个。
[{"data":"18/06/2021","dataHora":"18/06/2021 22:08","descricao":"Objeto em trânsito - por favor aguarde","cidade":"SAO JOSE DOS CAMPOS","uf":"SP","destino":{"cidade":"JOSE","uf":"SC"}},{"data":"18/06/2021","dataHora":"18/06/2021 17:52","descricao":"Objeto em trânsito - por favor aguarde","cidade":"SAO JOSE DOS CAMPOS","uf":"SP","destino":{"cidade":"CAMPOS","uf":"SP"}},{"data":"18/06/2021","dataHora":"18/06/2021 16:53","descricao":"Objeto postado","cidade":"SAO JOSE DOS CAMPOS","uf":"SP"}]
我需要一点帮助来整理这些词,就像:
data : 18/06/2021 - dataHora : 18/06/2021 22:08 - descricao : Objeto em trânsito - por favor aguarde - cidade : SAO JOSE DOS CAMPOS - uf : SP - destino : cidade : CAMPOS , uf : SP
data : 18/06/2021 - dataHora : 18/06/2021 17:52 - descricao : Objeto em trânsito - por favor aguarde - cidade : SAO JOSE DOS CAMPOS - uf : SP - destino : cidade : CAMPOS - uf : SP
data : 18/06/2021 - dataHora : 18/06/2021 16:53 - descricao : Objeto postado - cidade : SAO JOSE DOS CAMPOS - uf : SP
还在继续。最快的制作方法是什么?
您拥有的字符串是格式完美的 JSON 数组。书面的,作为源代码,它更具可读性(JSON 不关心不在双引号字符串中的空格):
JSONText : String =
'[' +
' {' +
' "data": "18/06/2021",' +
' "dataHora": "18/06/2021 22:08",' +
' "descricao": "Objeto em trânsito - por favor aguarde",' +
' "cidade": "SAO JOSE DOS CAMPOS",' +
' "uf": "SP",' +
' "destino": {' +
' "cidade": "JOSE",' +
' "uf": "SC"' +
' }' +
' },' +
' {' +
' "data": "18/06/2021",' +
' "dataHora": "18/06/2021 17:52",' +
' "descricao": "Objeto em trânsito - por favor aguarde",' +
' "cidade": "SAO JOSE DOS CAMPOS",' +
' "uf": "SP",' +
' "destino": {' +
' "cidade": "CAMPOS",' +
' "uf": "SP"}},' +
' {' +
' "data": "18/06/2021",' +
' "dataHora": "18/06/2021 16:53",' +
' "descricao": "Objeto postado",' +
' "cidade": "SAO JOSE DOS CAMPOS",' +
' "uf": "SP"' +
' }' +
']';
这里有一个可能的解决方案来解码它并将其写入 TMemo:
procedure TForm1.Button2Click(Sender: TObject);
var
JSONArray : TJSONArray;
ArrayElement : TJSONValue;
ItemData : String;
ItemDataHora : String;
ItemDescricao : String;
ItemCidade : String;
ItemUf : String;
ItemDestino : TJSONValue;
ItemDestinoCidade : String;
ItemDestinoUf : String;
begin
Memo1.Clear;
JSONArray := TJSONObject.ParseJSONValue(JSONText) as TJSONArray;
try
for ArrayElement in JsonArray do begin
ItemData := ArrayElement.GetValue<String>('data');
ItemDataHora := ArrayElement.GetValue<String>('dataHora');
ItemDescricao := ArrayElement.GetValue<String>('descricao');
ItemCidade := ArrayElement.GetValue<String>('cidade');
ItemUf := ArrayElement.GetValue<String>('uf');
ItemDestino := ArrayElement.FindValue('destino');
if Assigned(ItemDestino) then begin
ItemDestinoCidade := ItemDestino.GetValue<String>('cidade');
ItemDestinoUf := ItemDestino.GetValue<String>('uf');
end
else begin
ItemDestinoCidade := '';
ItemDestinoUf := '';
end;
Memo1.Lines.Add(Format('data : %s - dataHora : %s - descricao : %s - cidade : %s - uf : %s - destino : cidade : %s , uf : %s',
[ItemData,
ItemDataHora,
ItemDescricao,
ItemCidade,
ItemUf,
ItemDestinoCidade,
ItemDestinoUf]));
end;
finally
JSONArray.Free;
end;
end;
您要求将其写入 TMemo,但最好使用 TStringGrid 或 TTreeView。
我这里有一个非常脏的字符串,我需要 Delphi 中的代码来组织它。我的程序总是得到这个脏字符串,看一个。
[{"data":"18/06/2021","dataHora":"18/06/2021 22:08","descricao":"Objeto em trânsito - por favor aguarde","cidade":"SAO JOSE DOS CAMPOS","uf":"SP","destino":{"cidade":"JOSE","uf":"SC"}},{"data":"18/06/2021","dataHora":"18/06/2021 17:52","descricao":"Objeto em trânsito - por favor aguarde","cidade":"SAO JOSE DOS CAMPOS","uf":"SP","destino":{"cidade":"CAMPOS","uf":"SP"}},{"data":"18/06/2021","dataHora":"18/06/2021 16:53","descricao":"Objeto postado","cidade":"SAO JOSE DOS CAMPOS","uf":"SP"}]
我需要一点帮助来整理这些词,就像:
data : 18/06/2021 - dataHora : 18/06/2021 22:08 - descricao : Objeto em trânsito - por favor aguarde - cidade : SAO JOSE DOS CAMPOS - uf : SP - destino : cidade : CAMPOS , uf : SP
data : 18/06/2021 - dataHora : 18/06/2021 17:52 - descricao : Objeto em trânsito - por favor aguarde - cidade : SAO JOSE DOS CAMPOS - uf : SP - destino : cidade : CAMPOS - uf : SP
data : 18/06/2021 - dataHora : 18/06/2021 16:53 - descricao : Objeto postado - cidade : SAO JOSE DOS CAMPOS - uf : SP
还在继续。最快的制作方法是什么?
您拥有的字符串是格式完美的 JSON 数组。书面的,作为源代码,它更具可读性(JSON 不关心不在双引号字符串中的空格):
JSONText : String =
'[' +
' {' +
' "data": "18/06/2021",' +
' "dataHora": "18/06/2021 22:08",' +
' "descricao": "Objeto em trânsito - por favor aguarde",' +
' "cidade": "SAO JOSE DOS CAMPOS",' +
' "uf": "SP",' +
' "destino": {' +
' "cidade": "JOSE",' +
' "uf": "SC"' +
' }' +
' },' +
' {' +
' "data": "18/06/2021",' +
' "dataHora": "18/06/2021 17:52",' +
' "descricao": "Objeto em trânsito - por favor aguarde",' +
' "cidade": "SAO JOSE DOS CAMPOS",' +
' "uf": "SP",' +
' "destino": {' +
' "cidade": "CAMPOS",' +
' "uf": "SP"}},' +
' {' +
' "data": "18/06/2021",' +
' "dataHora": "18/06/2021 16:53",' +
' "descricao": "Objeto postado",' +
' "cidade": "SAO JOSE DOS CAMPOS",' +
' "uf": "SP"' +
' }' +
']';
这里有一个可能的解决方案来解码它并将其写入 TMemo:
procedure TForm1.Button2Click(Sender: TObject);
var
JSONArray : TJSONArray;
ArrayElement : TJSONValue;
ItemData : String;
ItemDataHora : String;
ItemDescricao : String;
ItemCidade : String;
ItemUf : String;
ItemDestino : TJSONValue;
ItemDestinoCidade : String;
ItemDestinoUf : String;
begin
Memo1.Clear;
JSONArray := TJSONObject.ParseJSONValue(JSONText) as TJSONArray;
try
for ArrayElement in JsonArray do begin
ItemData := ArrayElement.GetValue<String>('data');
ItemDataHora := ArrayElement.GetValue<String>('dataHora');
ItemDescricao := ArrayElement.GetValue<String>('descricao');
ItemCidade := ArrayElement.GetValue<String>('cidade');
ItemUf := ArrayElement.GetValue<String>('uf');
ItemDestino := ArrayElement.FindValue('destino');
if Assigned(ItemDestino) then begin
ItemDestinoCidade := ItemDestino.GetValue<String>('cidade');
ItemDestinoUf := ItemDestino.GetValue<String>('uf');
end
else begin
ItemDestinoCidade := '';
ItemDestinoUf := '';
end;
Memo1.Lines.Add(Format('data : %s - dataHora : %s - descricao : %s - cidade : %s - uf : %s - destino : cidade : %s , uf : %s',
[ItemData,
ItemDataHora,
ItemDescricao,
ItemCidade,
ItemUf,
ItemDestinoCidade,
ItemDestinoUf]));
end;
finally
JSONArray.Free;
end;
end;
您要求将其写入 TMemo,但最好使用 TStringGrid 或 TTreeView。