我们有一个JSON对象,其中一个对象的名称中带有短划线。例如下面。
{
"veg": [
{
"id": "3",
"name": "Vegetables",
"count": "25"
},
{
"id": "4",
"name": "Dal",
"count": "2"
},
{
"id": "5",
"name": "Rice",
"count": "8"
},
{
"id": "7",
"name": "Breads",
"count": "6"
},
{
"id": "9",
"name": "Meals",
"count": "3"
},
{
"id": "46",
"name": "Extras",
"count": "10"
}
],
"non-veg": [
{
"id": "25",
"name": "Starters",
"count": "9"
},
{
"id": "30",
"name": "Gravies",
"count": "13"
},
{
"id": "50",
"name": "Rice",
"count": "4"
}
]
}
我们如何反序列化此json?
您可以使用DataContractJsonSerializer实现此目的
[DataContract]
public class Item
{
[DataMember(Name = "id")]
public int Id { get; set; }
[DataMember(Name = "name")]
public string Name { get; set; }
[DataMember(Name = "count")]
public int Count { get; set; }
}
[DataContract]
public class ItemCollection
{
[DataMember(Name = "veg")]
public IEnumerable<Item> Vegetables { get; set; }
[DataMember(Name = "non-veg")]
public IEnumerable<Item> NonVegetables { get; set; }
}
现在您可以使用以下方式反序列化它:
string data;
// fill the json in data variable
ItemCollection collection;
using (MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(data)))
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(ItemCollection));
collection = (ItemCollection)serializer.ReadObject(ms);
}
问题内容: 尝试反序列化此JSON: 我的课: 我猜因为它在我的班级中具有cumulative_stats变量名称,所以不会反序列化accurate-stats,如何用破折号反序列化那个东西? 问题答案: 一种替代方法是使用DataContractJsonSerializer而不是JavascriptSerializer。 如果您这样声明类: 您可以像这样反序列化: 将产生:
问题内容: 我正在看http://docs.jquery.com/Plugins/Authoring#Defaults_and_Options为jQuery创建一个简单的插件。在有关选项和设置的部分之后,我执行了以下操作,该操作不起作用(脚本遇到设置后退出)。 一旦我从背景色中删除了破折号,一切就可以正常工作。 我是否缺少某些内容,或者jQuery文档是否错误? 问题答案: 没有。解析器会将其解释
问题内容: 我有一个名称为dash的现有python模块foo-bar.py 我希望避免更改模块名称,因为该模块是共享的,我将不得不追踪所有使用该模块的位置,以便我的特殊情况能够起作用。 有没有办法加载名称包含通常被禁止的“-”的模块? (我确实知道这不是最佳实践。但是,在这种情况下,我宁愿不要重新设计和测试更多的应用程序。而且,我不认为我的公司老板会赞成我花时间实施这样的变化。) 问题答案: 您
问题内容: 我有yaml文件的片段: 但我无法使用方法名称创建pojo 有什么方法可以解析此类Yaml文件? 问题答案: 您可以传递自定义PropertyUtils来处理此类情况
我有一个values.yaml,我将一个值存储在一个属性中,还有一个deployment.yaml,我尝试将该值赋给一个环境变量。问题是属性名包含破折号,并抛出以下错误消息。 “空值”是因为我试图将名称引用为 {{ Values.security.enablemockservice | 引号 }},而不使用缓行绑定的破折号,但实际的属性名称是 Values.security.enable-mock
问题内容: 我正在使用jq,但json标记中包含“-”使jq无法编译。我无法逃脱它使其工作。这里的命令 我已经在jq的github上阅读了这篇帖子https://github.com/stedolan/jq/issues/202,但我无法使其正常运行。 这是curl的输出 任何想法? 问题答案: 您需要用方括号和双引号引起来: 使用您给定的输入,它返回: 该JQ手册(开发) - >基本过滤器: 最