簡體   English   中英

使用JSON.NET序列化為數組

[英]Serialize as array with JSON.NET

如何使Json.NET序列化程序將實例序列化為對象數組?

基本上我需要這樣的東西:

[
    {
      "name":"Page1.html",
      "size":1,
      "outlinks":[
        "Page2.html",
        "Page3.html",
        "Page4.html"
      ]
    },
    {
      "name":"Page2.html",
      "size":2,
      "outlinks":[
        "Page3.html"
      ]
    },
    {
      "name":"Page3.html",
      "size":3,
      "outlinks":[
        "Page1.html",
        "Page2.html",
        "Page3.html",
        "Page4.html"
      ]
    },
    {
       "name":"Page4.html",
       "size":4,
        "outlinks":[]
    }
]

與:

    Dictionary<string, string[]> UrlsCollection = new Dictionary<string, string[]>();
    List<string> OutLinks = new  List<string>();

    OutLinks.Add("Page2.html");
    OutLinks.Add("Page3.html");
    OutLinks.Add("Page4.html");
    UrlsCollection.Add("Page1.html", OutLinks.ToArray());
    OutLinks.Clear();

    OutLinks.Add("Page3.html");
    UrlsCollection.Add("Page2.html", OutLinks.ToArray());
    OutLinks.Clear();

    OutLinks.Add("Page1.html");
    OutLinks.Add("Page2.html");
    OutLinks.Add("Page3.html");
    OutLinks.Add("Page4.html");
    UrlsCollection.Add("Page3.html", OutLinks.ToArray());
    OutLinks.Clear();

    UrlsCollection.Add("Page4.html", OutLinks.ToArray());
    OutLinks.Clear();

    string jsonUrlsCollection = JsonConvert.SerializeObject(UrlsCollection.ToList(), Formatting.Indented);

我得到:

[
  {
    "Key": "Page1.html",
    "Value": [
      "Page2.html",
      "Page3.html",
      "Page4.html"
    ]
  },
  {
    "Key": "Page2.html",
    "Value": [
      "Page3.html"
    ]
  },
  {
    "Key": "Page3.html",
    "Value": [
      "Page1.html",
      "Page2.html",
      "Page3.html",
      "Page4.html"
    ]
  },
  {
    "Key": "Page4.html",
    "Value": []
  }
]

必須有一種方法/東西來獲取一個簡單的JSON對象嗎?

修改解決方案以在評論中反映Deblaton Jean-Philippe的建議。

public class UrlDef
{
    public UrlDef() { outlinks = new List<string>();  }
    public string name { get; set; }
    public int size { get; set; }
    public List<string> outlinks { get; set; }
}

    List<UrlDef> UrlsCollection = new List<UrlDef>();

    UrlDef urldef;

    urldef = new UrlDef();
    urldef.name = "Page1.html";
    urldef.size = 1;
    urldef.outlinks.Add("Page2.html");
    urldef.outlinks.Add("Page3.html");
    urldef.outlinks.Add("Page4.html");
    UrlsCollection.Add(urldef);

    urldef = new UrlDef();
    urldef.name = "Page2.html";
    urldef.size = 2;
    urldef.outlinks.Add("Page3.html");
    UrlsCollection.Add(urldef);

    urldef = new UrlDef();
    urldef.name = "Page3.html";
    urldef.size = 3;
    urldef.outlinks.Add("Page1.html");
    urldef.outlinks.Add("Page2.html");
    urldef.outlinks.Add("Page3.html");
    urldef.outlinks.Add("Page4.html");
    UrlsCollection.Add(urldef);

    urldef = new UrlDef();
    urldef.name = "Page4.html";
    urldef.size = 4;
    UrlsCollection.Add(urldef);

    string jsonUrlsCollection = JsonConvert.SerializeObject(UrlsCollection, Formatting.Indented);

您需要序列化此對象的列表

public class Url
{
    public string name { get; set; }
    public int size { get; set; }
    public List<string> outlinks { get; set; }
}

對於此答案,當我了解JS的期望時,我使用了一個經常使用的網站,但不確定是否需要輸入CS: http : //json2csharp.com/

暫無
暫無

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

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