【问题标题】:Deserialize tweets returned from twitter api 1.1 c#反序列化从 twitter api 1.1 c# 返回的推文
【发布时间】:2015-07-05 10:22:04
【问题描述】:

当我传入特定的屏幕名称时,以下内容会返回给我。

我一直在关注这个Deserialize JSON into C# dynamic

我正在尝试通过执行以下操作来引用文本字段:

       var serializer = new JavaScriptSerializer();

       dynamic data = serializer.Deserialize(tweets, typeof(object));

       for (int i = 0; i < data.Count; i++)
       {
           var t = data[i][3].text;    
       }

显然这是错误的,因为我得到了

Additional information: Operator '<' cannot be applied to operands of type 'int' and 'object[]'

谁能帮我检索推文的文本。

【问题讨论】:

  • 你需要像这样改变你的 for 循环 for (int i = 0; i &lt; data.Count; i++)
  • @RahulNikate 完全忘记了 .Count 反正我现在已经把它放进去了,但我现在得到了附加信息:'System.Array' 不包含'Count'的定义
  • @RahulNikate 我在我的问题中添加了额外的代码
  • 好的,所以我将 count 更改为 length 并且它起作用了,但是当它命中 var t = data[i][3].text 时,我收到以下错误附加信息:'System 的最佳重载方法匹配.Collections.Generic.Dictionary.this[string]' 有一些无效参数
  • 你能告诉我们你试图解析的 JSON 吗? JavaScriptSerializer 实际返回的是 1) IList&lt;object&gt; 用于数组; IDictionary&lt;string, object&gt; 用于对象;以及值的适当原始类型。听起来您的数组元素是字典而不是嵌套数组,因此它们的属性需要按名称而不是索引来寻址。

标签: c# json twitter


【解决方案1】:

如您所见,文本是您收到的 json 根元素的属性。

我建议您使用 Json.net 库来解析 json 字符串并将其映射到您可以在代码中使用的对象。 你可以在这里下载:https://www.nuget.org/packages/newtonsoft.json/

为了从 json 字符串中获取文本,您必须执行以下操作:

  1. 在 c# 中创建一个具有所需属性的类。这是类,根节点的属性将被映射到。这样做,您必须在程序中实现要处理的属性(例如“文本”)。

    class Tweet{
    public string created_at { get; set; }
    public long id { get; set; }
    public string id_str { get; set; }
    public string text { get; set; }
    public string source { get; set; }
    }
    
  2. 现在您可以使用该库来解析 Tweet 对象,然后获取文本属性。

    var tweet = JsonConvert.DeserializeObject<Tweet>(jsonString);
    var text = Tweet.text;
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-05
    • 2023-03-10
    • 2014-02-26
    • 1970-01-01
    • 2014-07-07
    • 2013-08-19
    • 2014-02-13
    • 1970-01-01
    相关资源
    最近更新 更多