jsonwhat数据结构将生成这种格式的JSON



我正在尝试以这种格式生成一个 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() 中几乎给了我想要的东西,但我没有"标头"或"数据"名称。

我开始认为这不能用序列化对象()来完成?

这是一种奇怪的输出格式,但如果你不介意稍微改变你的结构,你可以得到你想要的结果。 首先,您需要将TrendLineData结构的item成员更改为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"
    ]
  ]
}

如果要保持结构原样,还有其他选项:

  • 你可以使用 JObjects/JArrays 手动构建你的 JSON 结构并序列化它;
  • 可以在结构上使用 LINQ 转换在所需的"形状"中创建匿名对象并对其进行序列化,或者
  • 你可以创建一个JsonConverter,将你的对象结构转换为正确的JSON。

如果您想演示任何这些技术,请告诉我。

该特定 JSON 无法直接使用 SerializeObject 完成,因为您在 JSON 中的同一数组中同时具有数组和对象类型。在数组中,不能混合不同类型的对象(对象结构或对象和数组)。

相关内容

  • 没有找到相关文章

最新更新