我一直在尝试使用JSON.net,我有一个复杂的JSON文件。我可能不会使用顺序循环来搜索我的数据,所以我认为我需要使用字典,因此可以输入我需要的密钥并获取相关对象。
我已经能够将json反序列化为字典,但这只是来自第一个节点。在我继续之前,我将首先向你显示JSON(这是相当多的数据,所以我把它缩短了),json中有一个错误,但是你得到了JSON的想法
{
"response": {
"dsCompanyContract": {
"dsCompanyContract": {
"ttEmployee": [
{
"empUID": 467775,
"empNameFirst": "Name1",
"empNameLast": "lastname",
"empFunction": "TECHNICUS AUTOTECHNIEK",
"ttContract": [
{
"UID": 1,
"empUID": 467775,
"refkey": "1_1808630",
"datStart": "2013-05-27",
"datStop": "2013-05-31",
"regime": 1,
"state": "CONTRACTED",
"ttScheduleDay": [
{
"ContractUID": 1,
"dat": "2013-05-27",
"dateTimeStart": "2013-05-27T08:00:00.000",
"dateTimeStop": "2013-05-27T17:00:00.000",
"duration": 8
},
{
"ContractUID": 1,
"dat": "2013-05-28",
"dateTimeStart": "2013-05-28T08:00:00.000",
"dateTimeStop": "2013-05-28T17:00:00.000",
"duration": 8
},
{
"ContractUID": 1,
"dat": "2013-05-29",
"dateTimeStart": "2013-05-29T08:00:00.000",
"dateTimeStop": "2013-05-29T17:00:00.000",
"duration": 8
},
{
"ContractUID": 1,
"dat": "2013-05-30",
"dateTimeStart": "2013-05-30T08:00:00.000",
"dateTimeStop": "2013-05-30T17:00:00.000",
"duration": 8
},
{
"ContractUID": 1,
"dat": "2013-05-31",
"dateTimeStart": "2013-05-31T08:00:00.000",
"dateTimeStop": "2013-05-31T16:00:00.000",
"duration": 7
}
]
}
]
}
]
}
]
}
}
}
}
我想要完成的是制作一本词典:
所有ttEmployees(带密钥:empUID)
ttEmployee中的所有ttContracts(带密钥:UID)
ttContracts中的所有ttScheduleDays(带键:dat)
我已经能够做到这一点,但我在列表中循环遍历所有对象,然后手动将它们添加到库中。我想知道如何更快地做到这一点? 此刻我正在使用:
obj = JsonConvert.DeserializeObject<IDictionary<string, Response>>(
newFormatJSON, new JsonConverter[] { new JSONDictionaryConverter() });
这使得rootelement的字典,从这里开始循环数据并将对象添加到自制字典
JSON.net的问题我找到了如何转换为字典的示例,但没有使用复杂的JSON。我首先要在制作字典之前跳过几个节点。
任何帮助将不胜感激,我会在需要/要求时更新。
提前致谢。