c# - 反序列化没有字段名的 JSON
问题描述
我有以下 JSON。当我反序列化它responseHeader
并且response
工作正常但highlighting
没有。
问题是突出显示数据如下所示,为_text_
空。我想将两个值都存储在两个字段中。问题是第一部分没有任何常量字段名称。
1. C:\\TestArea..........
2. _text_
"highlighting":{
"C:\\TestArea\\Destination\\SUP000011\\ATM-1B4L2KQ0ZE0-0001\\SoS_Update_2018_06_04_pram.pptx":{
"_text_":["\nSCRUM of SCRUMs S4-W1 \n AXP Internal \n 4-<em>Jun</em>-18 \n \n slide-master-content \n \n \n slide-notes \n 4-<em>Jun</em>"]},
JSON:
{
"responseHeader": {
"status": 0,
"QTime": 115,
"params": {
"q": "\"John\"",
"hl": "on",
"hl.simple.post": "</em>",
"start": "0",
"rows": "10000",
"hl.simple.pre": "<em>"
}
},
"response": {
"numFound": 10,
"start": 0,
"docs": [{
"domain": ["FIU/FCRU"],
"id": "C:\\TestArea\\Destination\\SUP000011\\ATM-1B4L2KQ0ZE0-0001\\SoS_Update_2018_06_04_pram.pptx"
}]
},
"highlighting": {
"C:\\TestArea\\Destination\\SUP000011\\ATM-1B4L2KQ0ZE0-0001\\SoS_Update_2018_06_04_pram.pptx": {
"_text_": ["\nSCRUM of SCRUMs S4-W1 \n AXP Internal \n 4-<em>Jun</em>-18 \n \n slide-master-content \n \n \n slide-notes \n 4-<em>Jun</em>"]
},
"C:\\TestArea\\Destination\\SUP000005\\F-3-20150505-0028\\tt.csv": {
"_text_": [",NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL\r\n930,<em>John</em> Ferguson,NULL,2015-06-30 15:27:04.677,test.test"]
}
}
}
我的数据模型和代码:
public class RootObject
{
public ResponseHeader responseHeader { get; set; }
public Response response { get; set; }
public Highlighting highlighting { get; set; }
}
public class Highlighting
{
public List<string> _text_ { get; set; }
}
var outObject = JsonConvert.DeserializeObject<RootObject>(jsonString, new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.Auto });
解决方案
对于该highlighting
属性,请Dictionary<string, Highlighting>
像这样使用:
public class RootObject
{
public ResponseHeader responseHeader { get; set; }
public Response response { get; set; }
public Dictionary<string, Highlighting> highlighting { get; set; }
}
public class Highlighting
{
public List<string> _text_ { get; set; }
}
为什么这行得通?"highlighting"
如果我像这样简化值:
"highlighting": {
"File Name 1":{ "_text_":[ "text 1" ] },
"File name 2":{ "_text_":[ "text 2" ] }
}
我们可以看到它是一个带有可变属性名称的 JSON 对象,它们的值具有固定的模式。Json.NET 支持将其序列化到字典和从字典中序列化;有关详细信息,请参阅反序列化字典。
样品小提琴在这里。
推荐阅读
- python - 如何在不延迟 Tkinter 中的 GUI 元素的情况下一次执行两个或多个功能?
- android - tflite BuildFromFile() 从 assets 文件夹中读取的 Android 本机文件
- java - 如何在 Spring 中获取 Keycloak 令牌
- php - html 表单中的提交按钮显示 php 脚本,而不是将表单数据发送到数据库
- c# - 页面间发送敏感数据的常用方法asp.net core
- python - 函数问题 - else 语句出错
- jquery - 如何在 django 中使用 ajax 更新绘图图
- javascript - jQuery on change 事件是否仅在用户操作时触发?
- azure - Azure 异地复制存储以允许在次要区域中写入
- prometheus - 如何在普罗米修斯中忽略或包含特定指标?