5

我正在尝试在 Net 3.5 中使用 JavaScriptSerializer 生成以下 JSON 结构:

{
    "chart": "pie",
    "series": [
        {
            "name": "Browsers",
            "data": [
                [
                    "Firefox",
                    6
                ],
                [
                    "MSIE",
                    4
                ]
            ],
            "size": "43%"
        }
    ]
}

我面临的问题是关于数据部分。我似乎无法在data中创建一个序列化为上述结构的类。

我已经阅读了其他涉及该主题的帖子,但解决方案似乎总是使用 JSON.Net。例如使用 JavaScriptSerializer 序列化字典。虽然,我主要想通过使用 JavaScriptSerializer 或 .Net 3.5 框架中的其他内置功能来解决它​​。

如何生成数据部分?

*EDIT使用 JavaScriptSerializer 解决它的方法是为即将被序列化的对象上的数据属性创建一个对象数组。

输入参数数据为“Firefox:6\nMSIE:4\nChrome:7”。

公共对象[] GetData(字符串数据) { var dataStrArr = data.Split(new[] { Environment.NewLine }, StringSplitOptions.None);

        var dataArr = new object[dataStrArr.Length];

        for (var index = 0; index < dataStrArr.Length; index++)
        {
            var component = dataStrArr[index];
            var componentArr = component.Split(':');
            if (componentArr.Length != 2)
                continue;

            var key = componentArr[0];
            decimal value;

            if (decimal.TryParse(componentArr[1], out value))
            {
                var keyValueArr = new object[2];
                keyValueArr[0] = key;
                keyValueArr[1] = value;

                dataArr[index] = keyValueArr;
            }
        }

        return dataArr;
    }
4

1 回答 1

1

我认为你需要类似下面的类(RootObject)来序列化它:

public class Series
{
  public string name { get; set; }
  public List<List<object>> data { get; set; }
  public string size { get; set; }
}

public class RootObject
{
  public string chart { get; set; }
  public List<Series> series { get; set; }
}

让我知道这是否有帮助。

于 2015-12-15T16:59:06.010 回答