很抱歉,如果已经提出这个问题,假设我有一个匿名的对象列表,如下所示:
Collection = new List<object>() {
new {
FirstSetting = new
{
FirstKEy = "Property vs Inspections",
color = "#FF6384",
fontStyle = "Arial",
sidePadding = 10,
}
},
new {
AnotherSettings = new
{
text = "another text",
color = "#FF6384",
fontStyle = "Arial",
sidePadding = 10,
}
}
};
并希望使用
转换为JSON字符串 JsonConvert.SerializeObject(Collection, JsonSerializerSettings);
我得到了这个结果。
[{
"FirstSetting": {
"FirstKey": "Property vs Inspections",
"color": "#FF6384",
"fontStyle": "Arial",
"sidePadding": 10
}
}, {
"anotherSettings": {
"text": "another text",
"color": "#FF6384",
"fontStyle": "Arial",
"sidePadding": 10
}
}]
但我不希望有阵列。我希望每个设置都是这样的对象。
{
"FirstSetting": {
"FirstKey": "Property vs Inspections",
"color": "#FF6384",
"fontStyle": "Arial",
"sidePadding": 10
},
"anotherSettings": {
"text": "another text",
"color": "#FF6384",
"fontStyle": "Arial",
"sidePadding": 10
}
}
有人可以解决一些问题吗?
答案 0 :(得分:1)
为此你需要以这种方式构造另一个匿名对象以获得所需的json。
如果序列化集合,那么它显然会在json中转换为数组:
var obj = new
{
Result = new
{
FirstSetting = new
{
FirstKEy = "Property vs Inspections", color = "#FF6384", fontStyle = "Arial", sidePadding = 10
},
AnotherSettings = new
{
text = "another text", color = "#FF6384", fontStyle = "Arial", sidePadding = 10
}
}
};
生成的json将是:
{
"Result":{
"FirstSetting":{
"FirstKey":"Property vs Inspections",
"color":"#FF6384",
"fontStyle":"Arial",
"sidePadding":10
},
"anotherSettings":{
"text":"another text",
"color":"#FF6384",
"fontStyle":"Arial",
"sidePadding":10
}
}
}
答案 1 :(得分:1)
跟进Ehsan Sajjad的回答。把它放在一个对象中会让我觉得它更具可读性。
Object mySettings = new {
FirstSetting = new {
FirstKEy = "Property vs Inspections",
color = "#FF6384",
fontStyle = "Arial",
sidePadding = 10,
},
AnotherSettings = new {
text = "another text",
color = "#FF6384",
fontStyle = "Arial",
sidePadding = 10,
}
};
以上可能会给你想要的结果。
答案 2 :(得分:1)
不是那就更好了,但如果有人发现它有用,你也可以使用字典。它仍然是干净的代码,它从列表中删除第一个对象'Result'。我发现它更清洁,但这是偏好。
var collection = new Dictionary<object, object>()
{
["FirstSetting"] = new
{
FirstKEy = "Property vs Inspections",
color = "#FF6384",
fontStyle = "Arial",
sidePadding = 10,
},
["AnotherSettings"] = new
{
text = "another text",
color = "#FF6384",
fontStyle = "Arial",
sidePadding = 10,
}
};
var jsonString = JsonConvert.SerializeObject(collection);
输出到:
{
"FirstSetting":
{
"FirstKEy":"Property vs Inspections",
"color":"#FF6384",
"fontStyle":"Arial",
"sidePadding":10
},
"AnotherSettings":
{
"text":"another text",
"color":"#FF6384",
"fontStyle":"Arial",
"sidePadding":10
}
}