-
Надо распарсить json, взял самое простое - uLkJSON, многие советуют, в т.ч. и местные Трудность возникла сразу же. Думаю, что не так делаю, потому что.. ну не советовали бы..
mmo1.Lines.Text := S;
jO1 := TlkJSON.ParseText(S) as TlkJSONobject;
Print(jO1.Field['response'].Field['items'].SelfTypeName);
jL1 := TlkJSONlist(jO1.Field['response'].Field['items']);
for i := 0 to jL1.Count - 1 do
begin
jo4 := TlkJSONobject(jL1.Child[i]);
Print(jO4.Field['id'].SelfTypeName); Print(jO4.Field['id'].Value); Print(jO4.Field['title'].SelfTypeName);
Print('v1=' + jO4.Field['title'].Value);
s := jo4.getString('title');
Print('v2=' + s);
jS := TlkJSONstring(jO4.Field['title']);
Print('v3=' + jS.Value); end;
Вывод в мемо {"response":{"count":236,"items":[{"id":19,"title":"Австралия"},{"id":20,"title" :"Австрия"},{"id":5,"title":"Азербайджан"},{"id":21,"title":"Албания"},{"id":22, "title":"Алжир"}]}} jsList jsNumber 19 jsString v1= v2= v3= jsNumber 20 jsString v1= v2= v3= .. и т.п. Как получить значение?
-
Почему, когда задашь вопрос, посещает мысль ))
Полез в TlkJSON.ParseText и попал на // incorrect string!!! if j=0 then begin result := false; exit; end;
наверное, неправильный json с его т.з.
-
опять не так..
{$ifdef USE_D2009} js.FValue := UTF8ToString(ws); // если бы {$else} js.FValue := UTF8Decode(ws); // тут {$endif}
ws = 'Австралия' а js.FValue = ''
UTF8Decode('Австралия') = '' ясно, он сам UTF8Decode применяет, а я уже подаю на вход прогнав через UTF8Decode
------- Все, понял
jO1 := TlkJSON.ParseText(UTF8Encode(S)) as TlkJSONobject;
{"response":{"count":236,"items":[{"id":19,"title":"Австралия"},{"id":20,"title" :"Австрия"},{"id":5,"title":"Азербайджан"},{"id":21,"title":"Албания"},{"id":22, "title":"Алжир"}]}} jsList jsNumber 19 jsString v1=Австралия v2=Австралия v3=Австралия ..
Не поверите, вчера тупил часа 2 ) И сегодня со вчерашними мыслями, полез задавать вопрос. Пардон ))
|