导航:
论坛 -> DELPHI技术
斑竹:liumazi,sephil
作者:
2017/7/20 9:12:29
标题:
加入我的收藏
楼主:
手欠,取最新的fpc和lazarus源码,并且编译。然后原来lazarus版本1.6的时候写的读取json的程序就突然不行了。然后就按照官方的例子程序重新写了以下。我把读取方式整理如下: 1. json数据格式: { "PASSWORD":"123", "TRXINFO": { "REFNO":"1489642073087", "MEMNUMBER":"", "PAYBY":"微信", "TOTALAMOUNT":"4.70", "PAIDAMOUNT":"4.70", "TIME":"2017-03-16 13:27:53" }, "ITEMS": [ { "ITEMCODE":"0102000600", "FULLNAME":"蔬菜/根茎类/西红柿", "UNIT":"斤", "BARCODE":"", "COUNT":"0.350", "PRICE":"4.50", "AMOUNT":"1.58" }, { "ITEMCODE":"0102000600", "FULLNAME":"蔬菜/根茎类/西红柿", "UNIT":"斤", "BARCODE":"", "COUNT":"0.350", "PRICE":"4.50", "AMOUNT":"1.58" }, { "ITEMCODE":"0102000600", "FULLNAME":"蔬菜/根茎类/西红柿", "UNIT":"斤", "BARCODE":"", "COUNT":"0.350", "PRICE":"4.50", "AMOUNT":"1.58" } ] } 2. 读取: var jsarray: tjsonarray; js : tjsondata; js1,js2,js3: tjsonobject; P : TJSONParser; D : TJSONData; try p := tjsonparser.create(jsonstring,[]); P.Options:=P.Options+[joStrict]; d := p.parse; js := tjsonobject.Create; password := TJsonObject(d).get('PASSWORD',''); if session.query.fieldbyname('c_password').asstring<>password then begin TJSonObject(js).Add('RETCODE','1'); TJsonObject(js).add('MSG','password error!'); result := js.Asjson; exit; end; try try js1 := TjsonObject(TJsonObject(d).get('TRXINFO',js3)); refno := js1.get('REFNO',''); memno := js1.get('MEMNUMBER',''); payby := js1.get('PAYBY',''); totalamount := js1.get('TOTALAMOUNT',''); paidamount := js1.get('PAIDAMOUNT',''); trxtime := js1.get('TIME',''); jsarray := tjsonobject(d).Get('ITEMS',jsarray); for j := 0 to jsarray.count-1 do begin js2 := TJSONObject(jsarray.items[j]); fullname := js2.get('FULLNAME',''); barcode := js2.get('BARCODE',''); count := js2.get('COUNT',''); price := js2.get('PRICE',''); amount := js2.get('AMOUNT',''); unitstr := js2.get('UNIT',''); end; except on e: exception do begin tjsonobject(js).Add('RETCODE','1'); tjsonobject(js).add('MSG',e.message); result := js.asjson; exit; end; end; finally end; tjsonobject(js).Add('RETCODE','0'); result := js.asjson; finally js.free; p.free; d.free; end;
----------------------------------------------
-