我正在尝试以这种格式生成JSON字符串:
{
"item": [
{
"text": "Past 7 days",
"value": "274057"
},
[
"38594",
"39957",
"35316",
"35913",
"36668",
"45660",
"41949"
]
]
}
我尝试使用以下结构与JsonConvert.SerializeObject()
public struct itemheader {
public string text;
public decimal value;
}
public struct itemdata
{
public itemheader header;
public decimal[] data;
}
public struct TrendLineData
{
public itemdata[] item;
}
因此,创建一个TrendLineData类型的变量并将其提供给JsonConvert.SerializeObject()几乎可以得到我想要的内容,但我不是“标题”或“数据”名称。
我开始认为使用SerializeObject()无法做到这一点?
答案 0 :(得分:1)
这是一种奇怪的输出格式,但如果您不介意稍微更改结构,则可以获得所需的结果。首先,您需要将item
结构的TrendLineData
成员更改为object[]
,然后您可以在数组中添加所需内容。此外,如果你想要数字周围的引号,那么它们将需要是字符串,而不是十进制。这是一个例子:
class Program
{
static void Main(string[] args)
{
TrendLineData data = new TrendLineData
{
item = new object[]
{
new itemheader
{
text = "Past 7 days",
value = "274057"
},
new string[]
{
"38594",
"39957",
"35316",
"35913",
"36668",
"45660",
"41949"
}
}
};
string json = JsonConvert.SerializeObject(data, Formatting.Indented);
Console.WriteLine(json);
}
}
public struct TrendLineData
{
public object[] item;
}
public struct itemheader
{
public string text;
public string value;
}
输出:
{
"item": [
{
"text": "Past 7 days",
"value": "274057"
},
[
"38594",
"39957",
"35316",
"35913",
"36668",
"45660",
"41949"
]
]
}
如果你想保持结构不变,还有其他选择:
如果您想要演示任何这些技巧,请告诉我们。
答案 1 :(得分:0)
由于您在JSON中的同一数组中同时拥有数组和对象类型,因此无法使用SerializeObject
直接完成特定的JSON。在数组中,您不能混合不同类型的对象(对象结构或在您的case对象和数组中)。