Java, PHP y otros lenguajes tienen marcos maduros para analizar datos Json, lo que nos permite usar muy poco código para convertir datos json formateados en objetos o atributos que el programa pueda reconocer. componentes en Delphi implementan esta funcionalidad, es decir, IsuperObject. Si aún no tiene este componente, búsquelo y descárguelo en línea o deje su correo electrónico en el cuadro de mensaje a continuación para solicitármelo.
Primero hablemos de algunas funciones de uso común en ISuperObject.
function SO(const s: SOString = '{}'): ISuperObject; sobrecarga Esta función pasa la cadena de datos json y devuelve un objeto ISuperObject. Esta suele ser la primera función que usamos al analizar json, como jObj: =SO. (jsonstr).
propiedad O [ruta constante: SOString]: ISuperObject lee GetO escribe PutO; por ejemplo: jobj.O ['nombre de usuario'], esta función es llamada por un objeto ISuperObject, la cadena entre corchetes es el nombre del campo en json, devolvió un objeto ISuperObject.
propiedad S [ruta constante: SOString]: SOString lee GetS escribe PutS; esta función es llamada por un objeto ISuperObject. A diferencia de O ['nombre de usuario'], devuelve un SoString, es decir, una cadena. jObj.S['nombre de usuario']; De manera similar, existen otras funciones similares, como I['age'] devuelve un número entero, B['isenable'] devuelve un tipo booleano y A['users'] devuelve una matriz TSuperArray.
Las funciones AsString, AsBoolean, AsInteger, AsArray, ISuperObject se utilizan para convertir ISuperObject al tipo de datos correspondiente.
Veamos un código de demostración a continuación. Los datos json son los siguientes.
{ "retcode": "1", "datafrom": "servidor", "usuarios": "[{/"id/":1, /"nombre de usuario/": /"liuderu/", /"sitio web/": /"bcoder.com/"},{/"id/":2, /"nombre de usuario/": /"Jeoe/", /"sitio web/": /"baidu.com/"}]"}Delphi versión 2010, el código es el siguiente:
unidad uFmMain; interfaz utiliza Windows, mensajes, SysUtils, variantes, clases, gráficos, controles, formularios, cuadros de diálogo, StdCtrls, ComCtrls, botones, superobjeto; escriba TFmMain = clase (TForm) Memo1: TMemo ListView1: TListView1: TBitBtn; : TLabel; procedimiento BitBtn1Click(Remitente: TObject); privado {Declaraciones privadas} público {Declaraciones públicas} fin;var FmMain: TFmMain;implementación{$R *.dfm}procedimiento TFmMain.BitBtn1Click(Remitente: TObject);var jRet, jUsers: ISuperObject; : TSuperArray; retCode: entero; strUsers: cadena; i: entero; comenzar jRet := SO(Memo1.Text); si (jRet.O['retcode'] <> nil) entonces comenzar retCode := jRet.O['retcode'].AsInteger; .Caption := 'Valor de retorno:' + IntToStr(retCode) + 'Fuente de datos:' + jRet.O['datafrom'].AsString; if(jRet.O['retcode'].AsInteger = 1) luego comience strUsers := jRet.O['users'].AsString; aryUsers := jUsers.AsArray; para I := 0 a aryUsers.Length - 1 comienza con ListView1.Items.Add comienza el título: = aryUsers[i].O['id'].AsString; SubItems.Add(aryUsers[i].O['nombre de usuario'].SubItems.Add(aryUsers[i); ].O['sitio web'].AsString); fin; fin; fin;fin;fin.Un ejemplo simple de Delphi usando ISuperObject para analizar json: Delphi_Json_jb51.rar