zoukankan      html  css  js  c++  java
  • JsonDataObjects

    {
      "name": "张三", 
      "age": 33,
      "sex": true,
      "weight": 123.456,
      "tel": ["86-1111111", "86-2222222"],
      "addresses":{"address":"A省B市", 
    "pc":"100001"},
      "children": [
        {
          "name": "张继",
          "age": "22",
          "sex": true
        },
        {
          "name": "张承",
          "age": "11",
          "sex": false
        }
      ]
    }

    uses JsonDataObjects;
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
        jo: TJsonObject;
        i: Integer;
    begin
        jo := TJsonObject.Parse( Memo1.Text) as TJsonObject;
    
        Memo2.Lines.Add(jo['name']);
        Memo2.Lines.Add(jo['age']);
        Memo2.Lines.Add(jo['sex']);
        Memo2.Lines.Add(jo['weight']);
        Memo2.Lines.Add(jo['tel'].Items[0]);
        Memo2.Lines.Add(jo['tel'].Items[1]);
        Memo2.Lines.Add(jo['addresses'].S['address']);
        Memo2.Lines.Add(jo['addresses'].S['pc']);
        Memo2.Lines.Add('总共数据数:' + inttostr(jo['children'].Count));
        for i := 0 to jo['children'].Count - 1 do
        begin
            Memo2.Lines.Add(jo['children'].Items[i]['name']);
            Memo2.Lines.Add(jo['children'].Items[i]['age']);
            Memo2.Lines.Add(jo['children'].Items[i]['sex']);
        end;
        jo.Free;

    ----------------------------------------------------------------------------------
    
    

    Simple example
    var
      Obj: TJsonObject;
    begin
      Obj := TJsonObject.Parse('{ "foo": "bar", "array": [ 10, 20 ] }') as TJsonObject;
      try
        ShowMessage(Obj['foo']);
        ShowMessage(IntToStr(Obj['array'].Count));
        ShowMessage(IntToStr(Obj['array'].Items[0]));
        ShowMessage(IntToStr(Obj['array'].Items[1]));
      finally
        Obj.Free;
      end;
    end;
    
    

    Filling and serializing JSON objects

    
    
    var
      Obj, ChildObj: TJsonObject;
    begin
      Obj := TJsonObject.Create;
      try
        // easy access
        Obj['foo'] := 'bar';
        // normal (and faster) access
        Obj.S['bar'] := 'foo';
        // automatic array creation, Obj is the owner of 'array'
        Obj.A['array'].Add(10);
        Obj.A['array'].Add(20);
        // automatic object creation, 'array' is the owner of ChildObj
        ChildObj := Obj.A['array'].AddObject;
        ChildObj['value'] := 12.3;
        // automatic array creation, ChildObj is the owner of 'subarray'
        ChildObj.A['subarray'].Add(100);
        ChildObj.A['subarray'].Add(200);
    
        ShowMessage(Obj.ToJSON({Compact:=}False));
      finally
        Obj.Free;
      end;
    
    
    {
    	"foo": "bar",
    	"bar": "foo",
    	"array": [
    		10,
    		20,
    		{
    			"value": 12.3,
    			"subarray": [
    				100,
    				200
    			]
    		}
    	]
    }
    
    

    Copying JSON objects with Assign

    
    
    var
      Obj, ClonedObj: TJsonObject;
    begin
      Obj := TJsonObject.ParseUtf8('{ "foo": [ "bar", {}, null, true, false, { "key": "value" } ] }') as TJsonObject;
      try
        ClonedObj := TJsonObject.Create;
        try
          // Make a copy of Obj
          ClonedObj.Assign(Obj);
          ShowMessage(ClonedObj.ToJSON(False));
        finally
          ClonedObj.Free;
        end;
      finally
        Obj.Free;
      end;
    end;
    
    
    {
    	"foo": [
    		"bar",
    		{},
    		null,
    		true,
    		false,
    		{
    			"key": "value"
    		}
    	]
    }




  • 相关阅读:
    hdu 3006 The Number of set(思维+壮压DP)
    Mysql-SQL优化-统计某种类型的个数
    canvas.clipPath canvas.clipRect() 无效的原因
    linux下alias命令具体解释
    使用带粒子效果的 CAEmitterLayer
    Wordpress 建站(一)
    一个有趣的问题:ls -l显示的内容中total究竟是什么?
    (转)奇妙的数据挖掘
    android几个高速打包命令
    hdu3336解读KMP算法的next数组
  • 原文地址:https://www.cnblogs.com/xionda/p/15200473.html
Copyright © 2011-2022 走看看