使用 JavaScriptSerializer() 反序列化 JSON 文件

2024-03-09

我将反序列化的 json 文件的结构如下所示;

{
    "id" : "1lad07",
    "text" : "test",
    "url" : "http:\/\/twitpic.com\/1lacuz",
    "width" : 220,
    "height" : 84,
    "size" : 8722,
    "type" : "png",
    "timestamp" : "Wed, 05 May 2010 16:11:48 +0000",
    "user" : {
        "id" : 12345,
        "screen_name" : "twitpicuser"
    }
}

我创建了一个类,其中包含文件名作为 JavaScriptSerializer 的属性。我将用来反序列化 json 的代码如下;

            using (var reader = new StreamReader(twitpicResponse.GetResponseStream())) {


                var responseBody = reader.ReadToEnd();
                var deserializer = new JavaScriptSerializer();
                var results = deserializer.Deserialize<Response>(responseBody);

            }

我的问题是如何读取 json 文件上的用户字段。如下所示;

"user" : {
    "id" : 12345,
    "screen_name" : "twitpicuser"
}

它有子属性和值。我如何在我的响应类中命名它们。我的响应类现在看起来像这样;

public class Response {

    public string id { get; set; }
    public string text { get; set; }
    public string url { get; set; }
    public string width { get; set; }
    public string height { get; set; }
    public string size { get; set; }
    public string type { get; set; }
    public string timestamp { get; set; }

}

最好的情况是什么?


  1. 您需要创建一个保存用户值的类,就像响应类一样User.
  2. 将属性添加到响应类“用户”,其中包含用户值的新类的类型User.

    public class Response {
    
        public string id { get; set; }
        public string text { get; set; }
        public string url { get; set; }
        public string width { get; set; }
        public string height { get; set; }
        public string size { get; set; }
        public string type { get; set; }
        public string timestamp { get; set; }
        public User user { get; set; }
    
    }
    
    public class User {
    
        public int id { get; set; }
        public string screen_name { get; set; }
    
    }
    

一般来说,您应该确保 json 的属性类型与您的 CLR 类匹配。您尝试反序列化的结构似乎包含多个数值(很可能是int)。我不确定是否JavaScriptSerializer能够自动将数字反序列化为字符串字段,但无论如何您都应该尝试将 CLR 类型匹配为尽可能接近实际数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 JavaScriptSerializer() 反序列化 JSON 文件 的相关文章

随机推荐

  • 用于临时变量赋值的 Python 上下文管理器

    我经常需要暂时用其他东西交换变量的值 进行一些依赖于该变量的计算 然后将变量恢复为其原始值 例如 var 0 Assign temporary value and do computation var ori var var 1 do so
  • 这个设计模式的名字是什么?

    假设我需要将应用程序中的文本保存到文件中 但允许用户拥有多种格式 pdf word txt 选择 第一种方法可能是 if extension pdf ExportToPdf file else if extension txt Export
  • 更改 UITableView、iPhone 中滚动条的宽度和颜色

    我只能找到是否要显示滚动条或不使用 tableView showsVerticalScrollIndicator YES NO 但如何自定义滚动条的颜色 宽度以及其他功能 如果可能 任何帮助将不胜感激 EDIT 我从代码片段中得到了这个想法
  • 如何在 AngularJs 中存储和读取会话(值)?

    我在存储和读取会话数据时遇到问题Angularjs 单击按钮后 emp name 应存储在session以及我如何读取存储的 emp namesession plnkr 中的示例 http plnkr co edit aX8A6b91obP
  • 如何在函数式编程中使用多态性? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在不同域的远程计算机上启动 Windows 服务

    我的电脑位于域 A 中 远程服务器位于域 B 中 我想使用 c 或任何其他语言或脚本从我的电脑重新启动服务器上的服务 Notes 我通过 VPN 连接到服务器 这意味着我可以手动 RDP 服务器并可以手动重新启动服务 我无法使用本地服务窗口
  • WCF 错误 未提供客户端证书。在 ClientCredentials 中指定客户端证书

    我正在尝试调用 WCF 服务 我创建了一个自签名证书并安装在我的 localmachine personnal certificates 中 并且我还在我的部分中添加了该证书 但我不明白为什么会出现此错误 这是我的 web config
  • 如何替换子资源请求中的嵌入凭据?

    我在 Ionic 应用程序的控制台中收到此错误 Deprecation Subresource requests whose URLs contain embedded credentials e g https user pass hos
  • 应用程序邀请配置失败 Firebase iOS cocoapods

    我在尝试新版本的 firebase 时遇到了一个构建错误 Terminating app due to uncaught exception com firebase appinvite reason App Invite configur
  • 如何在 JavaScript 中实现函数数组?

    我对 JavaScript 还很陌生 我需要编写一对 20 x 20 矩阵函数 我的所有函数都接受一个数字并返回一个数字 即相同的签名 例如 Myfunctions 1 2 应该返回一对可以在代码中调用的函数 在 Java 中 我通常会实现
  • multiprocessing.Pool.imap_unordered 的内存使用量稳步增长

    我刚刚注意到我的程序在处理大文件时使用越来越多的内存 不过 它一次只处理一行 所以我不明白为什么它会继续使用更多内存 经过大量挖掘 我意识到该程序由三个部分组成 加载数据 一次一行 处理a中的每一行multiprocessing Pool
  • 将元素添加到 xml 文件

    我正在尝试从 C csproj 文件添加和删除元素 该文件的部分内容如下所示 有人可以告诉我如何做以下两件事吗 添加一个元素 如下所示 该行显示 我想添加 这 删除一个元素 例如 假设我想删除 I 行 已在下面指出
  • 应用程序操作:通过动态快捷方式在 Google Assistant 中显示小部件

    考虑到官方文档和代码实验室中显示的选项 我的问题相对简单 但我一直在努力使其工作 我想通过动态快捷方式触发一个小部件在 Google Assistant 中显示 看起来非常简单 但是当实现这样的功能和动态快捷方式时
  • Rails 3 ajax 更新部分在没有页面刷新的情况下不起作用

    我正在开发 Rails 3 购物车 我有一个目录页面 其中显示所有产品 还有一个部分显示购物车的要点 因此 用户添加到购物车的任何产品都会显示在此购物车部分中 现在 这不起作用了 将产品添加到购物车后 我必须点击刷新 否则部分不会更新 这是
  • 如何从不同的活动获取主启动活动的意图?

    我目前正在进行另一项活动 如何获取主启动 Activity 的 Intent Intent launchIntent getIntent 上式中 显然getIntent 不会让我得到正确的Intent我需要的 我怎样才能获得主启动Activ
  • 导出 DLL 中的静态数据

    我有一个 DLL 其中包含一个静态类members I use declspec dllexport 为了利用这个类methods 但是 当我将其链接到另一个项目并尝试编译它时 我收到静态数据的 无法解析的外部符号 错误 例如 在DLL中
  • Python 小版本之间的 Wheel 不兼容性

    我正在 PyPi 上发布一个包 它将支持 Python 3 6 并且希望构建尽可能少的轮子 我读过Python 的轮子包装系统 https packaging python org guides distributing packages
  • javascript函数(输入大于今天日期的日期)

    我是 javascript 的初学者 我需要一个函数来检测用户是否输入日期 并在日期小于今天的日期时提醒他 HTML
  • 将角色混合到可调用对象中

    理论上 你可以在运行时将角色混合到对象中 https docs raku org language objects Mixins of Roles 所以我尝试用一 个函数来做到这一点 my random f gt arg Just arg
  • 使用 JavaScriptSerializer() 反序列化 JSON 文件

    我将反序列化的 json 文件的结构如下所示 id 1lad07 text test url http twitpic com 1lacuz width 220 height 84 size 8722 type png timestamp