【问题标题】:JObject nested propertyJObject 嵌套属性
【发布时间】:2015-05-08 22:31:29
【问题描述】:

我正在尝试使用 JObject 制作这样的 json 对象:

{
    "input": {
        "webpage/url": "http://google.com/"
    }
}

我可以添加如下属性:

JObject job = new JObject(
                new JProperty("website/url", "http://www.google.com") );

但任何时候我尝试将一个对象嵌套在另一个对象中,这样我就可以让父“输入”它引发异常。

如何使用 JObject 制作嵌套属性?

【问题讨论】:

    标签: c# json json.net


    【解决方案1】:

    可能最直接的方法是:

    var input = new JObject();
    
    input.Add("webpage/url", "http://google.com");
    
    var obj = new JObject();
    
    obj.Add("input", input);
    

    这给了你:

    {
      "input": {
        "webpage/url": "http://google.com"
      }
    }
    

    另一种方法是:

    var input = new JObject
    {
        { "webpage/url", "http://google.com" }
    };
    
    var obj = new JObject
    {
        { "input", input }
    };
    

    ...或者,如果您想在一个语句中完成所有操作:

    var obj = new JObject
    {
        {
            "input",
            new JObject
            {
                { "webpage/url", "http://google.com" }
            }
        }
    };
    

    【讨论】:

    • 这确实更直接:)
    • @JamesThorpe:你的也没什么问题......只是品味问题
    【解决方案2】:

    照原样继续,然后将它们嵌套在另一个层次中:

    JObject job = new JObject(
                    new JProperty("website/url", "http://www.google.com") );
    
    JObject parent = new JObject(new JProperty("input", job));
    

    parent.ToString() 现在给出:

    { “输入”:{ "网站/网址": "http://www.google.com" } }

    【讨论】:

    • 我使用了一种稍微不同的方法来消除中间分配:` JObject parent = new JObject() { new JProperty("input", new JObject() { new JProperty("website/url) ", "http://w w w.google.com") } ) }; `
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多