【问题标题】:Can't get the list of items returned from xml file after deserialization反序列化后无法获取从xml文件返回的项目列表
【发布时间】:2021-06-06 23:07:26
【问题描述】:
  1. 列表项

我从 xml 文件中转换并剥离了所有命名空间并转换为 Json 对象,下面是我在 jobject 中的文件这是我为获取返回的 Env 对象所做的,但它返回 null。

您能帮忙指出我的模型中缺少什么吗?我一直在做不同的路线但没有成功:(

 var jsonObject =
    JObject.Parse(Newtonsoft.Json.JsonConvert.SerializeXNode(XDocument.Parse(responseRet)));
                var Env= Newtonsoft.Json.JsonConvert.DeserializeObject<Envelope>(jsonObject.ToString());

     ```


  
  1. 这是我的课:

    公共类 SearchRecords_V2 { 公共列表 SearchTXRecord_V2 { get;放; } }

    公共类 SearchTXRecord_V2 { [数据成员] 公共 int SearchTXRecordID { 获取;放; } [数据成员] 公共字符串名字 { 获取;放; } [数据成员] 公共字符串 MiddleName { 获取;放; } [数据成员] 公共字符串姓氏{得到;放; } [数据成员] 公共字符串后缀 { 获取;放; } [数据成员] 公共字符串 SSN { 获取;放; } [数据成员] 公共字符串地址 { 获取;放; } [数据成员] 公共字符串城市{获取;放; } [数据成员] 公共字符串状态{获取;放; } [数据成员] 公共字符串 PostalCode { 获取;放; } [数据成员] 公共字符串 ComponentID { 获取;放; } [数据成员] 公共字符串状态{获取;放; } [数据成员] 公共字符串创建{获取;放; } }

【问题讨论】:

  • 您好,欢迎来到 SO!以上json 无效。我要做的是创建代表这个jsonc# 类,然后您可以轻松地反序列化它并执行您想要的任何搜索。有许多 json 到 c# 在线生成器可以帮助您创建这些类,这里有一些:JSON2CSharpQuickType。你能告诉我们json是如何序列化的,你是这样得到它的,还是你正在创造它?

标签: c#


【解决方案1】:

通过使用Newtonsoft.json 库,您可以将其解析为点网模型

型号:

namespace ConvertFromJson
{
    public partial class DemoJsonObj
    {
        public Employees Employees { get; set; }
    }

    public partial class Employees
    {
        public List<Employee> Employee { get; set; }
    }

    public partial class Employee
    {
        public long Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public Uri Photo { get; set; }
        public string SearchType { get; set; }
        public SearchRecords SearchRecords { get; set; }
    }

    public partial class SearchRecords
    {
        public List<SearchTestRecord> SearchTestRecord { get; set; }
    }

    public partial class SearchTestRecord
    {
        public long Field1 { get; set; }
        public string Field2 { get; set; }
        public RecordType RecordType { get; set; }
    }

    public partial class RecordType
    {
        public NativeRecordNumber NativeRecordNumber { get; set; }
    }

    public partial class NativeRecordNumber
    {
        public Uri Xmlns { get; set; }
        public string Text { get; set; }
    }
}

在您的代码中

var json = "{"employees":{"employee":[{"id":"1","firstName":"Tom","lastName":"Cruise","photo":"https://jsonformatter.org/img/tom-cruise.jpg","SearchType":"type1"},{"id":"2","firstName":"Maria","lastName":"Sharapova","photo":"https://jsonformatter.org/img/Maria-Sharapova.jpg","SearchType":"type1","SearchRecords":{"SearchTestRecord":[{"field1":"128181","field2":"TESTCASE","RecordType":{"NativeRecordNumber":{"@xmlns":"http://schemas.link.com/searchType/1.0.0/","#text":"MPXXXX2011"}}}]}},{"id":"3","firstName":"Robert","lastName":"Downey Jr.","photo":"https://jsonformatter.org/img/Robert-Downey-Jr.jpg","SearchType":"type2"}]}}"
DemoJsonObj obj = Newtonsoft.Json.JsonConvert.DeserializeObject<DemoJsonObj>(json);

【讨论】:

  • 谢谢你,我已经按照你的指示在这里了。但是, List 返回 0 它应该返回它下面的记录。知道缺少什么吗?
  • 如果答案有效,您应该标记为已接受。这些事情应该得到照顾。 1. 可空类型应该是 ?例:公长?字段 1。 2. JSON 属性名要与模型对象的属性名完全匹配。
  • 没有。 SearchTestRecord 列表不断返回 0,我觉得这很奇怪,不确定缺少什么。由于传入的文件是 Xml,因此不应出现可为空的字段。关于如何捕获或填充列表的任何想法?感谢您提前提供任何帮助。
  • 请发布您收到的 JSON,您将其解析为点网模型。
  • 我不知道在哪里发布代码,所以我编辑了问题并在 XML 中重新发布为传入的文件和我创建的支持它的对象。正如我所解释的,我目前遇到的问题是 SearchTestRecord 列表根据 xml 文件返回 0 而不是 1。不知道我还错过了什么来正确映射/填充这些东西。 :-(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-24
  • 1970-01-01
  • 2017-02-02
  • 2014-12-11
  • 2014-02-15
  • 2017-04-27
  • 1970-01-01
相关资源
最近更新 更多