Hello I'm trying to pair and retrieve JSON data but TJSONObject is not working for me the the data is a valid JSON (RFC 8259) but no matter what I do is not showing anything for me. I think i'm doing something wrong. Please Help..
JSON DATA
[
{
"id":"1001",
"email":"jdenero@testemail.com",
"name":"John Denero",
"memberships":[
{
"group":"Regular Users",
"hourlyRate":{
"amount":15,
"currency":"USD"
},
"membershipStatus":"ACTIVE"
}
]
},
{
"id":"1002",
"email":"mwilson@testemail.com",
"name":"Mark Wilson",
"memberships":[
{
"group":"Admin Users",
"hourlyRate":{
"amount":30,
"currency":"USD"
},
"membershipStatus":"ACTIVE"
}
]
},
{
"id":"1003",
"email":"psalmon@testemail.com",
"name":"Peter Salmon",
"memberships":[
{
"group":"Regular Users",
"hourlyRate":{
"amount":17,
"currency":"USD"
},
"membershipStatus":"DEACTIVATED"
}
]
}
]
Code I'm Using. See attach project.
procedure Form1_Button1_OnClick (Sender: TObject; var Cancel: boolean);
var
sl:TStringList;
jDataStream, jParent_01,jParent_02: TJSONObject;
jValue_01, jValue_02, jValue_03, jValue_04: TJSONString;
jArray: TJSONArray;
i: int;
begin
sl:=TStringList.Create;
sl.LoadFromFile(ExtractFilePath(Application.ExeName)+'\json.txt');
jDataStream := nil;
jDataStream:=TJSONObject(TJSONObject.ParseJSONValue(sl.Text));
frm_main.Memo1.Text:=sl.text;
frm_main.Memo2.Text:=''; //clear
if jDataStream <> nil then
begin
frm_main.Memo2.Lines.add('json size: '+ IntToStr(jDataStream.size)); //size of json
//Method 1.. get information from array
for i := 0 to jDataStream.Size-1 do
begin
jValue_01 := TJSONString(TJSONObject(jArray.Get(i)).GetPairByName('id').JsonValue); //get pair
frm_main.Memo2.Lines.add(jValue_01.value); //writes value
end;
frm_main.Memo2.Lines.Add('--------------'); //writes value
//Method 2... pair by name
jValue_02 := TJSONString(jDataStream.GetPairByName('email').JsonValue); //pair
frm_main.Memo2.Lines.Add(jValue_02.Value); //writes value
//method 3.. pair by index
jValue_03 := TJSONString(jDataStream.GetPairByIndex(0).JsonValue); //Level 1
frm_main.Memo2.Lines.Add(jValue_03.Value); //writes value
//method 4.. pair by index and then get information by name
jParent_01 := TJSONObject(jDataStream.GetPairByIndex(1).JsonValue); //Level 1
jValue_03 := TJSONString(jParent_01.GetPairByName('name').JsonValue); //pair
frm_main.Memo2.Lines.Add(jValue_03.Value); //writes value
end;
//free object
sl.free
end;
begin
end.