Tidak suka parser Delphi Json lainnya di luar sana. Mereka tampak terlalu rumit untuk tugas sederhana yang saya miliki untuk JSON.
Jadi ini adalah tujuan saya.
Versi ini hanya diuji pada Delphi XE 3, Delphi XE 6 (Android) dan Delphi 10 tetapi harus bekerja untuk semua versi Delphi yang mendukung obat generik dan TStringhelper.
Cukup sertakan file djson.pas dalam daftar penggunaan Anda agar ini berfungsi.
{
"username" : " thomas " ,
"name" : " Thomas " ,
"photos" : [
{
"title" : " Photo 1 " ,
"urls" : {
"small" : " http://example.com/photo1_small.jpg " ,
"large" : " http://example.com/photo1_large.jpg "
}
},
{
"title" : " Photo 2 " ,
"urls" : {
"small" : " http://example.com/photo2_small.jpg " ,
"large" : " http://example.com/photo2_large.jpg "
}
}
],
"int_list" : [
1 ,
2 ,
3
]
} var
user: TdJSON;
photo: TdJSON;
i: TdJSON;
begin
user := TdJSON.parse( { JSON_TEXT } );
try
writeln( ' Username: ' + user[ ' username ' ].AsString);
writeln( ' Name: ' + user[ ' name ' ].AsString);
// Photos
for photo in user[ ' photos ' ] do
begin
writeln( ' Title: ' + photo[ ' title ' ].AsString);
writeln( ' Small url: ' + photo[ ' urls ' ][ ' small ' ].AsString);
writeln( ' Large url: ' + photo[ ' urls ' ][ ' large ' ].AsString);
end ;
// Int list
for i in user[ ' int_list ' ] do
begin
writeln(i.AsInteger);
end ;
finally
user.free;
end ;
end ;[
{
"username" : " thomas " ,
"name" : " Thomas "
},
{
"username" : " kurt " ,
"name" : " Kurt "
},
{
"username" : " bent " ,
"name" : null
}
] var
users: TdJSON;
user: TdJSON;
begin
users := TdJSON.Parse( { JSON_TEXT } );
try
for user in users do
begin
writeln(user[ ' username ' ].AsString);
if ( not user[ ' name ' ].IsNull) then
writeln(user[ ' name ' ].AsString);
end ;
finally
users.Free;
end ;
end ;Lisensi MIT (MIT)
Hak Cipta (C) 2018 Thomas Erlang
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
Pemberitahuan hak cipta di atas dan pemberitahuan izin ini harus dimasukkan dalam semua salinan atau bagian substansial dari perangkat lunak.
Perangkat lunak ini disediakan "sebagaimana adanya", tanpa jaminan apa pun, tersurat maupun tersirat, termasuk tetapi tidak terbatas pada jaminan dapat diperjualbelikan, kebugaran untuk tujuan tertentu dan nonpringement. Dalam hal apa pun penulis atau pemegang hak cipta tidak akan bertanggung jawab atas klaim, kerusakan atau tanggung jawab lainnya, baik dalam tindakan kontrak, gugatan atau sebaliknya, timbul dari, di luar atau sehubungan dengan perangkat lunak atau penggunaan atau transaksi lain dalam perangkat lunak.