当前位置: 首页 > 面试题库 >

使用DataContractJsonSerializer反序列化一个简单的JSON数组

仲阳朔
2023-03-14
问题内容

我确定这个问题已经被一遍又一遍地询问了,但是由于某种原因,我仍然无法设法解决这个问题。

我想反序列化包含单个成员的JSON对象;字符串数组:

{"results" : ["a", "b"]}

这是我要反序列化的类:

public class Whatever {
    [DataMember(Name = "results")]
    public string[] Results { get; protected set; }
}

这是反序列化方法:

private static T Deserialize<T>(string json)
{
    var instance = Activator.CreateInstance<T>();
    using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(json)))
    {
        var serializer = new DataContractJsonSerializer(instance.GetType());
        return (T)serializer.ReadObject(ms);
    }
}

像这样的调用Deserialize<Whatever>("{\"results\" : [\"a\", \"b\"]}")返回的初始化实例,WhateverResults数组保持不变null

的结构有问题Whatever吗?


问题答案:

嗯,发布此消息后,我意识到我缺少以下DataContract属性的修饰Whatever

[DataContract]
public class Whatever {
    [DataMember(Name = "results")]
    public string[] Results { get; protected set; }
}

现在工作正常。



 类似资料:
  • 问题内容: 我有以下形式的JSON字符串: 我正在尝试使用带有以下代码段的C#.NET反序列化器DataContractJsonSerializer反序列化JSON 现在,由于JSON数组是变量类型的数组,所以我不知道对象X应该是哪种类型 如果我的弦是 我可以用这个: 那对我有用。我想知道是否有任何方法可以反序列化变量类型JSON数组? 问题答案: 您可以使用Json.NET做到这一点。 JArr

  • 问题内容: 我有以下JSON片段: 全部在一个行版本中(适用于字符串文字): 在上述例子中,,,和被需要的,但是和是可选的。 这是我要反序列化的课程: 这是我用来反序列化的代码: 除此以外,一切都进行得相当顺利,并且第一次通过时都是空的。我曾尝试一切在阳光下,试图让他们填充:自定义类,,,无论是后者,和所有其他的集合,似乎适用的。[编辑:我忘记尝试了,这似乎是显而易见的候选人。没用。] 这个问题,

  • 问题内容: 我在反序列化以下json数组时遇到麻烦(对不起,大小): 如果将其粘贴到json-viewer中,则会得到以下结构: 现在,包含具有坐标的数组的数组具有可变大小。所以我想在Java中,整个对象应该是一个数组,其中包含数组的集合,每个数组都包含一个。就像是 但是gson不接受这一点。我收到以下错误消息: 这似乎很奇怪,因为对我来说好像不像一个数组。但这可能使我感到困惑,或多或少地迷路了…

  • 我收到来自第3方服务提供商的JSON响应,其中包含一系列对象。当我尝试使用Jackson api反序列化JSON时。我收到以下异常 我的回答是 我的POJO课是这样的 我正在尝试使用以下代码反序列化JSON 如果我试着去做 它在BEGIN_对象本身失败。 如何使用数组读取和反序列化JSON。我应该编写自己的反序列化器吗? 编辑如果我使用JSON字符串而不是流,那么我就能够取回所有Java对象。但为

  • 问题内容: 我是C ++的新手。使用序列化和反序列化类型数据的最简单方法是什么。我发现了一些使用示例,但它们对我来说是晦涩的。 问题答案: 请注意,将键解释为路径,例如,将对“ ab” =“ z”放置将创建{“ a”:{“ b”:“ z”}} JSON,而不是{“ ab”:“ z”} 。否则,使用是微不足道的。这是一个小例子。

  • 问题内容: 我将大对象数组序列化为jsonhttp响应流。现在,我想一次从流中反序列化这些对象。是否有任何C#库可以让我做到这一点?我看过json.net,但似乎必须立即反序列化对象的完整数组。 澄清:我想一次从流中读取一个json对象并将其反序列化。 问题答案: 为了逐步读取JSON,您需要结合使用和。但是,您不必一定要从阅读器中手动读取所有JSON。您应该能够利用Linq-To-JSONAPI