C# 移除外括号并使用编号命名对象?

C# 移除外括号并使用编号命名对象?,c#,.net,json,serialization,json.net,C#,.net,Json,Serialization,Json.net,我对json感到非常困惑(我仍在学习json) 我想要的JSON: { "entityMap": { "0": { "type": "LINK", "mutability": "MUTABLE", "data": { "url": "https://stackoverflow.com/" } }, "1": { "type": "LINK", "mutability": "MUTAB

我对json感到非常困惑(我仍在学习json)

我想要的JSON:

{  "entityMap": {
    "0": {
      "type": "LINK",
      "mutability": "MUTABLE",
      "data": {
        "url": "https://stackoverflow.com/"
      }
    },
    "1": {
      "type": "LINK",
      "mutability": "MUTABLE",
      "data": {
        "url": "https://stackoverflow.com/"
      }
    },
    "2": {
      "type": "LINK",
      "mutability": "MUTABLE",
      "data": {
        "url": "https://stackoverflow.com/"
      }
    },
    "3": {
      "type": "LINK",
      "mutability": "MUTABLE",
      "data": {
        "url": "https://stackoverflow.com/"
      }
    }
  }
}
这被认为是错误的json吗?如何用这样的数字命名json

到目前为止,这就是我得到的

{
    "entityMap": [
        {
            "type": "LINK",
            "mutability": "MUTABLE",
            "data": {
                "url": "https://stackoverflow.com/"
            }
        },
        {
            "type": "LINK",
            "mutability": "MUTABLE",
            "data": {
                "url": "https://stackoverflow.com/"
            }
        },
        {
            "type": "LINK",
            "mutability": "MUTABLE",
            "data": {
                "url": "https://stackoverflow.com/"
            }
        }
    ]
}
这是我的课

    public class editorRawTest
    {
        public List<entityMapItem> entityMap { get; set; }

    }


    public class entityMapItem
    {
        public string type { get; set; }
        public string mutability { get; set; }
        public entityMapItemData data { get; set; }
    }

    public class entityMapItemData
    {
        public string url { get; set; }

    }
公共类editorRawTest
{
公共列表entityMap{get;set;}
}
公共类实体资本
{
公共字符串类型{get;set;}
公共字符串可变性{get;set;}
公共entityMapItemData数据{get;set;}
}
公共类entityMapItemData
{
公共字符串url{get;set;}
}
我的执行代码:

                var map = new List<entityMapItem>();

                var mapitem = new entityMapItem() { type = "LINK", mutability = "MUTABLE", data = new entityMapItemData() { url = "https://stackoverflow.com/" }  };

                map.Add(mapitem);
                map.Add(mapitem);
                map.Add(mapitem);



                editorRawTest bc = new editorRawTest() { entityMap = map };

                string JSONresult = JsonConvert.SerializeObject(bc);
                string path = @"jsonmapdata.json";
                using (var tw = new StreamWriter(path, true))
                {
                    tw.WriteLine(JSONresult.ToString());
                    tw.Close();
                }
var-map=newlist();
var mapitem=new entityMapItem(){type=“LINK”,mutability=“MUTABLE”,data=new entityMapItemData(){url=”https://stackoverflow.com/" }  };
map.Add(mapitem);
map.Add(mapitem);
map.Add(mapitem);
editorRawTest bc=new editorRawTest(){entityMap=map};
字符串JSONresult=JsonConvert.SerializeObject(bc);
字符串路径=@“jsonmapdata.json”;
使用(var tw=newstreamwriter(路径,true))
{
WriteLine(JSONresult.ToString());
tw.Close();
}
在谷歌和stackoverflow上搜索,运气不好。 任何线索或帮助都将不胜感激


谢谢。

要获得第一个JSON,您需要将
列表
替换为
字典
,如下所示:

public class editorRawTest
{
    public Dictionary<string, entityMapItem> entityMap { get; set; }
}
var map = new Dictionary<string, entityMapItem>();

var mapitem = new entityMapItem() { type = "LINK", mutability = "MUTABLE", data = new entityMapItemData() { url = "https://stackoverflow.com/" }  };

for (int i = 0; i < 4; i++)
{
    map.Add(i.ToString(), mapitem);
}
公共类editorRawTest
{
公共字典entityMap{get;set;}
}
然后你需要像这样填充它:

public class editorRawTest
{
    public Dictionary<string, entityMapItem> entityMap { get; set; }
}
var map = new Dictionary<string, entityMapItem>();

var mapitem = new entityMapItem() { type = "LINK", mutability = "MUTABLE", data = new entityMapItemData() { url = "https://stackoverflow.com/" }  };

for (int i = 0; i < 4; i++)
{
    map.Add(i.ToString(), mapitem);
}
var-map=newdictionary();
var mapitem=new entityMapItem(){type=“LINK”,mutability=“MUTABLE”,data=new entityMapItemData(){url=”https://stackoverflow.com/" }  };
对于(int i=0;i<4;i++)
{
Add(i.ToString(),mapitem);
}

但我会劝阻你不要那样做,除非你不得不这样做。您现在拥有的(列表中的第二个JSON)更易于使用。如果你在两者之间有选择,最好选择第二种方法。请参阅了解原因。

我认为,第一个json不好,为什么需要添加任意对象的数量。您可以像第二个json一样使用数组?实际问题是什么<代码>我想要的JSON也没用。我不知道,先生,但它的代码是前程序员遗留下来的。在我个人看来,我喜欢第二个,但“其他人”可能不喜欢。所以我别无选择,只能坚持第一个;如果你别无选择,那就没什么好争论的了。(从你的问题中,我不确定你是在设计新的东西,还是仅仅尝试使用现有的JSON。)我使用现有的JSON。对不起,我的英语能力有限,所以我不知道该怎么说。但是谢谢你的帮助,我真的很感激,通常我使用逐字字符串,但现在我尝试使用json.net(让我保持理智)