C# 移除外括号并使用编号命名对象?
我对json感到非常困惑(我仍在学习json) 我想要的JSON: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
{ "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(让我保持理智)