none
JSON序列化问题,能否序列化时做到List和非List兼容 RRS feed

  • 问题

  •     public class Read_Syllable1
        { 
            public string content { get; set; } 
            public List<SentenceSingle> sentence { get; set; }
        }

    序列化为上面的类时,有时候接口返回:

    "sentence": [{"a":1},{"b":2}]这种字符串,

    有时候返回

    sentence:{"a":1} 这种,这样导致我需要动态的改变class Read_Syllable1的定义,单个时就改成:

    public SentenceSingle sentence { get; set; }这样,不太方便,

    有什么方法可以做到一个类兼容数组和单个变量的情况吗?

    2019年9月26日 6:05

全部回复

  • Hi,

    List<T>中不是可以包含单个元素的吗?为什么要和其他情况区别开?

    Regards,

    Kyle


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2019年9月26日 6:51
    版主
  • "sentence": [{"a":1},{"b":2}]这种字符串,

    有时候返回

    sentence:{"a":1} 这种

    所以对应的class解析时,目前如果写死为public List<SentenceSingle> sentence { get; set; } 或是 public SentenceSingle sentence { get; set; }这样就可能会报错。

    我不知道这边这个 sentence { get; set; } 的类型应该怎么定义?

    2019年9月26日 6:57
  • "sentence": [{"a":1},{"b":2}]这种字符串,

    有时候返回

    sentence:{"a":1} 这种

    所以对应的class解析时,目前如果写死为public List<SentenceSingle> sentence { get; set; } 或是 public SentenceSingle sentence { get; set; }这样就可能会报错。

    我不知道这边这个 sentence { get; set; } 的类型应该怎么定义?

    或许你可以对返回“sentence:{"a":1}”类型的情况进行判断后添加“[]”.这比要重写两种情况简单的多。

    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2019年9月26日 7:00
    版主
  • 是否加个Json属性就可以解决呢?有没有这样的方法呢
    2019年9月26日 7:04
  • 好像没有这种属性,除了上面提到的方法,只能尝试为两个情况分别定义对应的class了。


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2019年9月26日 7:13
    版主