我目前正在开发一项Web服务,直到今天我才遇到这种行为。这是我要回的课:
public class Block
{
public int order { get; set; }
public string title { get; set; }
public Dictionary<string, object> attributes { get; set; }
}
attributes
可以包含任何类型的值:简单类型、对象、数组等。
当我通过Web服务返回Block
对象时,我得到的是:
{
"order": 1,
"attributes": [
{
"Key": "key1",
"Value": "value1"
},
{
"Key": "key2",
"Value": "value2"
}
],
"title": "Title"
}
有人知道我为什么不简单地得到"key1": "value1"
输出吗?
首先,您的JSON无效,请注意这一行的"order": 1
之后没有,
。
在这个修正之后,你可以像这个一样改变你的类结构
public class Attribute
{
public string Key { get; set; }
public object Value { get; set; }
}
public class Block
{
public int order { get; set; }
public List<Attribute> attributes { get; set; }
public string title { get; set; }
}
通过这种方式,您将能够反序列化JSON,我只是在这个网站上使用https://json2csharp.com/用于将JSON转换为C#类
至于用法,您可以使用.FirstOrDefault(x=>x.Key=="key1"(来获取您想要的任何数据,或者如果您将逐一处理所有列表,您可以简单地使用属性。计数
当我进行时
var x = new Class
{
order = 1,
title = "Title",
attributes = new Dictionary<string, object>
{
{ "key1", "value1" },
{ "key2", "value2" }
}
};
var json = JsonConvert.SerializeObject(x);
Console.WriteLine(json);
我得到
{"order":1,"title":"Title","attributes":{"key1":"value1","key2":"value2"}}
您是否有序列化数据的代码,或者ASP.NET是否为您执行此操作?