Topic: не получается разобрать json

ответ

{
    "status": "OK",
    "status_code": 100,
    "sms": {
        "70000000000": {
            "status": "ERROR",
            "status_code": 232,
            "status_text": "Превышен лимит одинаковых сообщений на этот номер в день"
        }
    },
    "balance": 10
}

парсинг

 
JSONObject:=TJSONObject(TJSONObject.ParseJSONValue(smsquestion.responsetext));
if JSONObject <> nil then
begin
JsonArray:=TJSONArray(JSONObject.GetPairByName('sms').JsonValue);
for i := 0 to JsonArray.Size-1 do
begin
JSONObjProp := TJSONObject( TJSONObject(JsonArray.Get(i)).GetPairByName(smst).JsonValue );
JSONString := TJSONString(JSONObjProp.GetPairByName('status_code').JsonValue);
ShowMessage(JSONString.Value);
end;
end;

ни как не могу понять где ошибка..

2 (edited by sibprogsistem 2019-08-08 07:57:43)

Re: не получается разобрать json

загружаем объект json
получаем объект "sms"
получаем объект "70000000000"
получаем ключ "status_code"

понятно тоесть я пытался получать масив
JsonArray:=TJSONArray(JSONObject.GetPairByName('sms').JsonValue);

что есть не правельно
но я всеравно не могу получить объек из объекта


procedure Form1_Button1_OnClick (Sender: TObject; var Cancel: boolean);
var
sl:TStringList;
JSONObject, JSONObjProp, JSONObjProp2: TJSONObject;
JSONString: TJSONString;
begin
  sl:=TStringList.Create;
  JSONObject := nil;
  sl.Text:='{"status": "OK", "status_code": 100, "sms": {"70000000000": {"status": "ERROR", "status_code": 232, "status_text": "Превышен лимит одинаковых сообщений на этот номер в день" } }, "balance": 10 }';
  JSONObject:=TJSONObject(TJSONObject.ParseJSONValue(sl.Text));
  if JSONObject <> nil then
   begin
   JSONObjProp := TJSONObject( TJSONObject.GetPairByName('sms').JsonValue);
   JSONObjProp2 := TJSONObject( JSONObjProp.GetPairByName('70000000000').JsonValue);
   JSONString := TJSONString(JSONObjProp2.GetPairByName('status_code').JsonValue);
   ShowMessage(JSONString.Value);
 end;
end;

Re: не получается разобрать json

замените строку

   JSONObjProp := TJSONObject( TJSONObject.GetPairByName('sms').JsonValue);

на

   JSONObjProp := TJSONObject( JSONObject.GetPairByName('sms').JsonValue);
Dmitry.

Re: не получается разобрать json

Большое спасибо!!