当前位置: 首页 > 知识库问答 >
问题:

NewtonSoft JSON在仍然序列化的数据中反序列化结果

慎建本
2023-03-14
[
    {\"passport_expiration\": \"2019-09-14\", \"first_name\": \"asdfasdf\", \"last_name\": \"asdfasdf\", \"cass_status\": \"APPROVED\", \"notes\": null, \"kcm_status\": \"DENIED\", \"employment_type\": \"flight_deck\", \"employee_id\": \"10556\", \"passport_id\": \"12341234\"}, 
    {\"passport_expiration\": \"2026-01-04\", \"first_name\": \"asdfasdf\", \"last_name\": \"asdfasdf\", \"cass_status\": \"APPROVED\", \"notes\": null, \"kcm_status\": \"DENIED\", \"employment_type\": \"flight_deck\", \"employee_id\": \"10557\", \"passport_id\": \"12341234\"}, 
    {\"passport_expiration\": \"2026-08-31\", \"first_name\": \"asdfasdf\", \"last_name\": \"MC asdfasdf\", \"cass_status\": \"APPROVED\", \"notes\": null, \"kcm_status\": \"DENIED\", \"employment_type\": \"flight_deck\", \"employee_id\": \"10598\", \"passport_id\": \"12341234\"}
]
dynamic dsCrew = JsonConvert.DeserializeObject(responseText);
{[
    {
        "passport_expiration": "2026-08-31",
        "first_name": "asdfasdf",
        "last_name": "MC asdfasdf",
        "cass_status": "APPROVED",
        "notes": null,
        "kcm_status": "DENIED",
        "employment_type": "flight_deck",
        "employee_id": "10598",
        "passport_id": "12341234"
    },
    {
        "passport_expiration": "2026-11-16",
        "first_name": "asdfasdf",
        "last_name": "BLasdf",
        "cass_status": "APPROVED",
        "notes": null,
        "kcm_status": "DENIED",
        "employment_type": "flight_deck",
        "employee_id": "14798",
        "passport_id": "12341234"
    },
    {
        "passport_expiration": "2025-05-05",
        "first_name": "sadfasdf",
        "last_name": "asdf",
        "cass_status": "APPROVED",
        "notes": "",
        "kcm_status": "DENIED",
        "employment_type": "flight_deck",
        "employee_id": "14838",
        "passport_id": "12341234"
    }
]}

它似乎只是简单地删除了转义字符,将一些空字符串转换为空字符串,并将整个内容包装在一组额外的花括号中。就像它被反序列化为不同的序列化格式一样。

在其他SO问题中,答案建议创建一个类来反序列化:

Deserialised_Crew dsCrew = JsonConvert.DeserializeObject<Deserialised_Crew>(responseText);

但当我这么做的时候,我得到了一个例外:

我需要一种方法来引用这个响应中的名称和Employee_ID。我对JSON比较陌生。

共有1个答案

水渊
2023-03-14

第一个问题可能就是您在调试器中看到的问题。那代码应该没问题。

第二个问题只是涉及到反序列化到数组,因为JSON对象是一个crew数组:

Deserialised_Crew[] dsCrew = JsonConvert.DeserializeObject<Deserialised_Crew[]>(responseText);

从那以后,您的代码dscrev[0].last_name将按预期工作。

 类似资料:
  • 我正在尝试使用kryo序列化和反序列化到二进制。我想我已经完成了序列化,但似乎无法反序列化。下面是我正在处理的代码,但最终我想存储一个字节[],然后再次读取它。文档只显示了如何使用文件。

  • 问题内容: 我已经开始在我的第一个android应用程序上进行工作,并且具有处理多层图像的应用程序。我能够将项目文件的平面版本导出为PNG,但我希望能够保存分层图像以供以后编辑(包括应用于某些层的任何选项,例如基于文本的层)。 无论如何,我已经确保需要写入文件的类是“可序列化的”,但是由于android.graphics.Bitmap不可序列化这一事实而遇到了一些障碍。以下代码实质上将位图作为PN

  • 问题内容: 我正在使用python访问由Drupal安装管理的数据库。我想在Drupal中访问的数据作为PHP序列化对象保存在数据库中。 是否有任何预构建的python模块可以将PHP序列化对象反序列化为python对象?我已经做了一些搜索,却一无所获。 我意识到我可以从头开始编写自己的解析器,但是我宁愿使用经过尝试和测试的东西。 问题答案: 您在寻找phpserialize吗?

  • 问题内容: 我尝试过在Java和Android之间实现跨平台序列化。我使用了Serializable,并将我的代码在Android中与台式机Java放在同一软件包中。 来源:java-desktop序列化 资料来源:Android-反序列化 学生是一类,实现了Serializable。在桌面上,我将学生实例序列化为“ thestudent.dat”。我将此文件放在Android设备上的SD卡上,并

  • 问题内容: 我注意到存储在Redis中的某些序列化对象在反序列化方面遇到问题。 当我对Redis中存储的对象类进行更改时,通常会发生这种情况。 我想了解问题,以便为解决方案设计一个清晰的方案。 我的问题是,什么导致反序列化问题?移除公共/私人财产会引起问题吗?也许添加新属性?向类添加新功能会产生问题吗?那么更多的构造函数呢? 在我的序列化对象中,我有一个属性Map,如果我更改(更新了一些属性,添加

  • 问题内容: Golang中将结构序列化和反序列化为字符串的最佳方法(完整性和性能)是什么,反之亦然? 例如,如果我有这个结构: 我想将其存储在Redis上并取回。我试过保存,整型和字符串,这很好,但是如何存储结构对象? 问题答案: 使用gob和base64可以解决问题,例如: 当您需要序列化自定义结构或类型(例如struct)时,只需添加以下行: