加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何用Delphi解析Json

发布时间:2020-12-15 09:25:54 所属栏目:大数据 来源:网络整理
导读:需要解析以下 JSON,但无法弄清楚如何使用D2007和uJSON 有人可以告诉我如何访问这些值吗? { "id": "40","created_at": "2013-08-02 20:50:28","delivery_at": "2013-08-02 20:50:28","cid": "7","firstname": "Joe","lastname": "Average","street": "Joes P
需要解析以下 JSON,但无法弄清楚如何使用D2007和uJSON
有人可以告诉我如何访问这些值吗?

{
    "id": "40","created_at": "2013-08-02 20:50:28","delivery_at": "2013-08-02 20:50:28","cid": "7","firstname": "Joe","lastname": "Average","street": "Joes Place","items": [
        {
            "id": 601,"price": 25,"name": "Pizza Party 40x60 cm","qty": 1,"opt": 8,"extras": [
                [
                    "Salmon",0
                ],[
                    "Spinach",1.5
                ],]
        }
    ],"eMail": "me@examble.com"
}

提前致谢!

编辑:纠正错误的json(也许并非完全错误,但并非意图)

解决方法

感谢Rufo爵士,我尝试使用SuperObject,我可以让它工作.
在这里我的解决方案希望它能帮助别人.不知道它是否是最短路但是有效.

但是如果你能写一些较短的代码,请随意编辑这个答案. (如果你能纠正我可怜的英语;)

var
   order,pos: ISuperObject;
   firstname,lastname,street,created_at,delivery_at,cid,eMail : String;
   id,i : Integer;
begin

       order := SO(<jsontext>);

       id := order.AsObject.I['id'];
       fistname := order.AsObject.S['firstname'];
       lastname := order.AsObject.S['lastname'];
       street := order.AsObject.S['street'];
       cid := order.AsObject.S['cid'];
       eMail := order.AsObject.S['eMail'];
       created_at := order.AsObject.S['created_at'];
       delivery_at := order.AsObject.S['delivery_at'];

       // do some stuff with your values
       // and next are the articles of our pizza order ;)
       for pos in order['items'] do begin

           // get the values like this
           ShowMessage(pos['name'].AsString)
       end;

       // and now the array of extra ingredients for an particular article

       for i := 0 to pos['extras'].AsArray.Length - 1 do begin

            // do some stuff here we Show it again only for demonstration purpose
            ShowMessage(pos['extras[' + IntToStr(i) + '][0]'].AsString)
       end

end;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读