C# 使用newtonsoft JSON.net动态创建JSON

C# 使用newtonsoft JSON.net动态创建JSON,c#,json,windows-phone-8,json.net,C#,Json,Windows Phone 8,Json.net,我正在尝试以这种格式创建或searealize json { "title": "Star Wars", "link": "http://www.starwars.com", "description": "Star Wars blog.", "item": [ { "title": "Episode VII", "description": "Episode VII production",

我正在尝试以这种格式创建或searealize json

   {

     "title": "Star Wars",
    "link": "http://www.starwars.com",
    "description": "Star Wars blog.",
    "item": [
       {
         "title": "Episode VII",
         "description": "Episode VII production",
         "link": "episode-vii-production.aspx"
        },
        {
         "title": "Episode VITI",
         "description": "Episode VII production",
         "link": "episode-vii-production.aspx"
        }


        ]
       }
我正在努力做到这一点

 dynamic o = new ExpandoObject();

o.title= "fdsfs";
o.link= "fsrg";
o.description="fdsfs";
      foreach (var adata in all)
                {
                o.item.title="fgfd";
                o.item.description="sample desc";
                o.item.link="http://google.com"
                } 
 string json = JsonConvert.SerializeObject(o);

但在这里,它在foreach循环中抛出异常,它告诉它不包含相同的定义等。因此,我做错了什么,以及如何实现相同的结构,您应该获得您所声明的json。代码的问题在于,项实际上应该是项的列表

public class Item
{
    public string title { get; set; }
    public string description { get; set; }
    public string link { get; set; }
}

public class RootObject
{
    public string title { get; set; }
    public string link { get; set; }
    public string description { get; set; }
    public List<Item> item { get; set; }
}
公共类项目
{
公共字符串标题{get;set;}
公共字符串说明{get;set;}
公共字符串链接{get;set;}
}
公共类根对象
{
公共字符串标题{get;set;}
公共字符串链接{get;set;}
公共字符串说明{get;set;}
公共列表项{get;set;}
}
然后您可以使用以下代码:

 dynamic o = new ExpandoObject();

o.title= "fdsfs";
o.link= "fsrg";
o.description="fdsfs";
o.item = new List<ExpandoObject>();  
//although list of dynamics is not recommended as far as I remember
      foreach (var adata in all)
                {
                o.item.Add(new Item(){   
                title="fgfd",
                description="sample desc",
                link="http://google.com" });
                } 
 string json = JsonConvert.SerializeObject(o);
dynamic o=newexpandoobject();
o、 title=“fdsfs”;
o、 link=“fsrg”;
o、 description=“fdsfs”;
o、 item=新列表();
//虽然据我记忆所及,不推荐使用动态列表
foreach(全部为var adata)
{
o、 item.Add(新项(){
title=“fgfd”,
description=“示例描述”,
链接=”http://google.com" });
} 
字符串json=JsonConvert.SerializeObject(o);

这是您必须获得所述json的结构。代码的问题在于,项实际上应该是项的列表

public class Item
{
    public string title { get; set; }
    public string description { get; set; }
    public string link { get; set; }
}

public class RootObject
{
    public string title { get; set; }
    public string link { get; set; }
    public string description { get; set; }
    public List<Item> item { get; set; }
}
公共类项目
{
公共字符串标题{get;set;}
公共字符串说明{get;set;}
公共字符串链接{get;set;}
}
公共类根对象
{
公共字符串标题{get;set;}
公共字符串链接{get;set;}
公共字符串说明{get;set;}
公共列表项{get;set;}
}
然后您可以使用以下代码:

 dynamic o = new ExpandoObject();

o.title= "fdsfs";
o.link= "fsrg";
o.description="fdsfs";
o.item = new List<ExpandoObject>();  
//although list of dynamics is not recommended as far as I remember
      foreach (var adata in all)
                {
                o.item.Add(new Item(){   
                title="fgfd",
                description="sample desc",
                link="http://google.com" });
                } 
 string json = JsonConvert.SerializeObject(o);
dynamic o=newexpandoobject();
o、 title=“fdsfs”;
o、 link=“fsrg”;
o、 description=“fdsfs”;
o、 item=新列表();
//虽然据我记忆所及,不推荐使用动态列表
foreach(全部为var adata)
{
o、 item.Add(新项(){
title=“fgfd”,
description=“示例描述”,
链接=”http://google.com" });
} 
字符串json=JsonConvert.SerializeObject(o);

这是您必须获得所述json的结构。代码的问题在于,项实际上应该是项的列表

public class Item
{
    public string title { get; set; }
    public string description { get; set; }
    public string link { get; set; }
}

public class RootObject
{
    public string title { get; set; }
    public string link { get; set; }
    public string description { get; set; }
    public List<Item> item { get; set; }
}
公共类项目
{
公共字符串标题{get;set;}
公共字符串说明{get;set;}
公共字符串链接{get;set;}
}
公共类根对象
{
公共字符串标题{get;set;}
公共字符串链接{get;set;}
公共字符串说明{get;set;}
公共列表项{get;set;}
}
然后您可以使用以下代码:

 dynamic o = new ExpandoObject();

o.title= "fdsfs";
o.link= "fsrg";
o.description="fdsfs";
o.item = new List<ExpandoObject>();  
//although list of dynamics is not recommended as far as I remember
      foreach (var adata in all)
                {
                o.item.Add(new Item(){   
                title="fgfd",
                description="sample desc",
                link="http://google.com" });
                } 
 string json = JsonConvert.SerializeObject(o);
dynamic o=newexpandoobject();
o、 title=“fdsfs”;
o、 link=“fsrg”;
o、 description=“fdsfs”;
o、 item=新列表();
//虽然据我记忆所及,不推荐使用动态列表
foreach(全部为var adata)
{
o、 item.Add(新项(){
title=“fgfd”,
description=“示例描述”,
链接=”http://google.com" });
} 
字符串json=JsonConvert.SerializeObject(o);

这是您必须获得所述json的结构。代码的问题在于,项实际上应该是项的列表

public class Item
{
    public string title { get; set; }
    public string description { get; set; }
    public string link { get; set; }
}

public class RootObject
{
    public string title { get; set; }
    public string link { get; set; }
    public string description { get; set; }
    public List<Item> item { get; set; }
}
公共类项目
{
公共字符串标题{get;set;}
公共字符串说明{get;set;}
公共字符串链接{get;set;}
}
公共类根对象
{
公共字符串标题{get;set;}
公共字符串链接{get;set;}
公共字符串说明{get;set;}
公共列表项{get;set;}
}
然后您可以使用以下代码:

 dynamic o = new ExpandoObject();

o.title= "fdsfs";
o.link= "fsrg";
o.description="fdsfs";
o.item = new List<ExpandoObject>();  
//although list of dynamics is not recommended as far as I remember
      foreach (var adata in all)
                {
                o.item.Add(new Item(){   
                title="fgfd",
                description="sample desc",
                link="http://google.com" });
                } 
 string json = JsonConvert.SerializeObject(o);
dynamic o=newexpandoobject();
o、 title=“fdsfs”;
o、 link=“fsrg”;
o、 description=“fdsfs”;
o、 item=新列表();
//虽然据我记忆所及,不推荐使用动态列表
foreach(全部为var adata)
{
o、 item.Add(新项(){
title=“fgfd”,
description=“示例描述”,
链接=”http://google.com" });
} 
字符串json=JsonConvert.SerializeObject(o);

您必须创建
o.item
才能为其赋值:

dynamic o = new ExpandoObject();
var all = new object[] { new object() };

o.title= "fdsfs";
o.link= "fsrg";
o.description="fdsfs";
var items = new List<ExpandoObject>();
foreach (var adata in all)
{
    dynamic item = new ExpandoObject();
    item.title="fgfd";
    item.description="sample desc";
    item.link="http://google.com";
    items.Add(item);
} 
o.item = items;
string json = JsonConvert.SerializeObject(o);
dynamic o=newexpandoobject();
var all=新对象[]{new object()};
o、 title=“fdsfs”;
o、 link=“fsrg”;
o、 description=“fdsfs”;
var items=新列表();
foreach(全部为var adata)
{
动态项=新的ExpandooObject();
item.title=“fgfd”;
item.description=“样本描述”;
项目链接=”http://google.com";
项目。添加(项目);
} 
o、 项目=项目;
字符串json=JsonConvert.SerializeObject(o);

您必须创建
o.item
才能为其赋值:

dynamic o = new ExpandoObject();
var all = new object[] { new object() };

o.title= "fdsfs";
o.link= "fsrg";
o.description="fdsfs";
var items = new List<ExpandoObject>();
foreach (var adata in all)
{
    dynamic item = new ExpandoObject();
    item.title="fgfd";
    item.description="sample desc";
    item.link="http://google.com";
    items.Add(item);
} 
o.item = items;
string json = JsonConvert.SerializeObject(o);
dynamic o=newexpandoobject();
var all=新对象[]{new object()};
o、 title=“fdsfs”;
o、 link=“fsrg”;
o、 description=“fdsfs”;
var items=新列表();
foreach(全部为var adata)
{
动态项=新的ExpandooObject();
item.title=“fgfd”;
item.description=“样本描述”;
项目链接=”http://google.com";
项目。添加(项目);
} 
o、 项目=项目;
字符串json=JsonConvert.SerializeObject(o);

您必须创建
o.item
才能为其赋值:

dynamic o = new ExpandoObject();
var all = new object[] { new object() };

o.title= "fdsfs";
o.link= "fsrg";
o.description="fdsfs";
var items = new List<ExpandoObject>();
foreach (var adata in all)
{
    dynamic item = new ExpandoObject();
    item.title="fgfd";
    item.description="sample desc";
    item.link="http://google.com";
    items.Add(item);
} 
o.item = items;
string json = JsonConvert.SerializeObject(o);
dynamic o=newexpandoobject();
var all=新对象[]{new object()};
o、 title=“fdsfs”;
o、 link=“fsrg”;
o、 description=“fdsfs”;
var items=新列表();
foreach(全部为var adata)
{
动态项=新的ExpandooObject();
item.title=“fgfd”;
item.description=“样本描述”;
项目链接=”http://google.com";
项目。添加(项目);
} 
o、 项目=项目;
字符串json=JsonConvert.SerializeObject(o);

您必须创建
o.item
才能为其赋值:

dynamic o = new ExpandoObject();
var all = new object[] { new object() };

o.title= "fdsfs";
o.link= "fsrg";
o.description="fdsfs";
var items = new List<ExpandoObject>();
foreach (var adata in all)
{
    dynamic item = new ExpandoObject();
    item.title="fgfd";
    item.description="sample desc";
    item.link="http://google.com";
    items.Add(item);
} 
o.item = items;
string json = JsonConvert.SerializeObject(o);
dynamic o=newexpandoobject();
var all=新对象[]{new object()};
o、 title=“fdsfs”;
o、 link=“fsrg”;
o、 description=“fdsfs”;
var it