簡體   English   中英

Newtonsoft JSON反序列化和jsonfreeze

[英]Newtonsoft JSON Deserialize AND jsonfreeze

我有兩個簡單的PHP類

class Order{
    public $orderNo;
    public $lines = array();
    public $paid = false;

    public function addLine(OrderLine $line) {
        $this->lines[] = $line;
    }

public function setPaid($paid = true) {
        $this->paid = true;
    }
}

class OrderLine{

public function __construct($item, $amount){
    $this->item = $item;
    $this->amount = $amount;
}

    public $item;
    public $amount;
    public $options;
}

序列化對象使用https://github.com/mindplay-dk/jsonfreeze

...

$json = new JsonSerializer;
$data = $json->serialize($order);

有輸出:

{
  "#type": "Order",
  "orderNo": 123,
  "lines": [{
    "#type": "OrderLine",
    "item": "milk \"fuzz\"",
    "amount": 3,
    "options": null
  },{
    "#type": "OrderLine",
    "item": "cookies",
    "amount": 7,
    "options": {
      "#type": "#hash",
      "flavor": "chocolate",
      "weight": "1\/2 lb"
    }
  }],
  "paid": true
}

在VB.NET中發送字符串XMLRPC

作為使用Newtonsoft JSON的活動對象?

以及如何通過類似於活動VB.net或C#對象的json字符串創建兼容格式?

您可以從這里開始。 您創建了一些具有代表JSON格式的屬性的類(未經驗證的代碼,正如您所願):

public class MyData
{
    [JsonProperty("#type")]
    public string Type { get; set; }

    [JsonProperty("#orderNo")]
    public int OrderNo { get; set; 

    [JsonProperty("paid")]
    public bool Paid { get; set; }

    [JsonProperty("lines")]
    public List<MyDataLine> Lines { get; set; }
}

public class MyDataLines
{
    [JsonProperty("#type")]
    public string Type { get; set; }

    [JsonProperty("options")]
    public MyDataLinesOptions Options { get; set; }

    // ... more
}

public class MyDataLinesOptions
{
    // ... more
}

然后,您可以像這樣對數據進行序列化和反序列化:

string json = "the json data you received";
MyData myData = JsonConvert.DeserializeObject<MyData>(json);

// ...

json = JsonConvert.SerializeObject(myData);

“ #type”:“訂單”

“ #type”:“ OrderLine”,

這不是屬性,這是對象類型的指示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM