c# - 解析嵌套 JSON——子属性为 null

标签 c# json

所以我试图解析第三方 api 返回给我的一些 JSON,如下所示:

{
    "status":"ok",
    "links":
    [
        {
            "link":
            {
                "link_name":"Sample",
                "link_id":"9999"
            }
        },

    ],//and so on with other nested properties

我已经创建了将 JSON 映射到的类

    [DataContract]
    public class JsonTestResults
    {
        [DataMember]
        public string status { get; set; }
        [DataMember]
        public IEnumerable<Link> links { get; set; }
    }
    [DataContract]
    public class Link
    {
        [DataMember]
        public string link_name { get; set; }
        [DataMember]
        public string link_id { get; set; }
    }

我正在通过这个解串器推送响应(取自 this post

public  T Deserialise<T>( string json )
        {
            T obj = Activator.CreateInstance<T>( );
            using (MemoryStream ms = new MemoryStream( Encoding.Unicode.GetBytes( json ) ))
            {
                DataContractJsonSerializer serializer = new DataContractJsonSerializer( obj.GetType( ) );
                obj = (T)serializer.ReadObject( ms ); 
                return obj;
            }
        }

但是,我的反序列化结果显示 Link[] 的内容为空。 (每返回一个Link对象,但link_name和link_id为空。)

我已经查看了this , this , this , thisthis ,但一直没能解决这个问题。我正在寻找一种不需要第三方库的解决方案。 (根据我的首席开发人员)。

我不认为这是与 JSON 匹配的类的问题,但如果有人想查看它,我可以发布完整的代码。

最佳答案

您还需要一个类才能正确反序列化它

public class JsonTestResults
{
    public string status { get; set; }
    public IEnumerable<TempLink> links { get; set; }
}

public class TempLink
{
    public Link link;
}

public class Link
{
    public string link_name { get; set; }
    public string link_id { get; set; }
}

我用Json.Net测试了它并工作了。

var obj = JsonConvert.DeserializeObject <JsonTestResults>(json);

JavaScriptSerializer 也可以工作

var obj2 = new JavaScriptSerializer().Deserialize<JsonTestResults>(json);

关于c# - 解析嵌套 JSON——子属性为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12304270/

相关文章:

c# - Dapper 多映射 API splitOn 参数错误 - 我没有使用 MultiMapping

javascript - 服务器端数据表分页无法正常工作

python - 在字典列表中形成字典的列表理解

javascript - 使用 jquery 解析 json 以构建动态填充的选择

javascript - 递归地重新组合分割的键/值对

c++ - 读取解码后的 JSON Lua 表

c# - 你知道我可以在 C# 中使用的 Inno Setup 包装器吗?

c# - 我们可以从filestream中获取文件的创建时间和日期吗?

c# - 如何查找/比较 List<class> 中的类属性

c# - 在 Web 方法中访问 JSON 调用的参数