将Json反序列化为Asp.net中实现Ienumerable的类

2023-12-13

我有下面的函数,它获取 facebook 数据并将其作为字符串返回。

public static string GetUserNewsFeed(string strAccessToken)
{
    Dictionary<string, object> PostDetail = new Dictionary<string, object>();
    DateTime CreatedDateTime = DateTime.Today.AddDays(-90);
    var epoch = (CreatedDateTime.ToUniversalTime().Ticks - 621355968000000000) / 10000000;
    PostDetail.Add("Posts", "SELECT post_id,source_id FROM stream WHERE filter_key in (SELECT filter_key FROM stream_filter WHERE uid=me() AND type='newsfeed') and (likes.count > 0 or comments.count > 0) and created_time > " + epoch);
    PostDetail.Add("PostComments", "select post_id,fromid from comment where post_id in (select post_id from #Posts)");
    PostDetail.Add("PostLikes", "SELECT object_id,post_id,user_id FROM like WHERE post_id in (select post_id from #Posts)");
    string Json = HttpUtility.UrlEncode(Newtonsoft.Json.JsonConvert.SerializeObject(PostDetail));       
    return RunFQLQuery(Json, strAccessToken);
}

以下是调用此函数并使用 Json.NET 将其转换为 Jobject 的代码:

strFeed = FacebookAPI.GetUserNewsFeed(Convert.ToString(Session["access_token"]));
JObject objStreamData = JObject.Parse(strFeed);
var PostResponse = objStreamData.SelectToken("data[0]");

下面一行将其反序列化为 NewsFeedPost Class :

var Posts = JsonConvert.DeserializeObject<NewsFeedPost>(PostResponse.ToString());

下面是课程:

public class NewsFeedPost 
{      
    public string name { get; set; }
    public List<Post> fql_result_set { get; set; }
}
public class Post
{
    public string post_id { get; set; }
    public string source_id { get; set; }
}

现在的问题是,当我将 NewsFeed Post 类更改为以下时,它会抛出错误“无法将 JSON 对象反序列化为“BAL.NewsFeedPost”类型" :

public class NewsFeedPost : IEnumerable<Post>
{      
    public string name { get; set; }
    public List<Post> fql_result_set { get; set; }
    public IEnumerator<Post> GetEnumerator()
    {
        foreach (Post item in fql_result_set)
        {
            yield return item;
        }
    }
    IEnumerator IEnumerable.GetEnumerator()
    {
        return GetEnumerator();
    }

}

以下是 Json 响应的示例:

{
  "data": [
{
  "name": "Posts",
  "fql_result_set": [
    {
      "post_id": "1"
    },
    {
      "post_id": "2"
    }
  ]
},
{
  "name": "PostComments",
  "fql_result_set": [
    {
      "post_id": "3",
      "fromid": 4
    },
    {
      "post_id": "5",
      "fromid": 6
    }
  ]
},
{
  "name": "PostLikes",
  "fql_result_set": [
    {
      "object_id": 7,
      "post_id": "8",
      "user_id": 9
    },
    {
      "object_id": 10,
      "post_id": "11",
      "user_id": 12
    }
  ]
}
]
}

我只想枚举列表并创建逗号分隔列表并将其保存到数据库。任何人都可以阐明需要做什么吗?如何获取列表的计数和长度属性?


两件事情:

1) Add JsonObjectAttribute to NewsFeedPost:

[JsonObject]
public class NewsFeedPost : IEnumerable<Post>

2)要反序列化您显示的 JSON,您需要另一个类:

public class NewsFeedPosts
{
    public List<NewsFeedPost> Data { get; set; }
}

然后你可以用该类来调用你的反序列化作为你想要的反序列化:

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

将Json反序列化为Asp.net中实现Ienumerable的类 的相关文章

随机推荐

  • 隐藏单独的自定义功能区按钮

    我有一个自定义 Excel 功能区和一个 Excel 加载项 其中包含一个在打开工作簿时实例化一次的类 根据该类的某些属性 我需要隐藏自定义功能区中的某些按钮 全部位于同一选项卡中 我的定制丝带是
  • 为跨平台开源 UI 无关的 C# 类库选择哪种 Visual Studio 2017 项目类型?为什么?

    我有一个 C 类库的想法 我想开发并发布为开源 我想让它在尽可能多的可用 Net 平台上轻松可用 必要时重新编译 例如完整的 Net Mono Net Core Xamarin 只有经典的 Net 兼容性才是真正必须的 然而 该库不会依赖于
  • 围绕单个语句的事务有什么作用?

    我了解事务如何有助于协调一对更新 我不明白的是在事务中包装单个语句 这是我所见过的 90 事实上 在现实生活中的代码中 根据我的经验 更常见的是发现一系列逻辑相关的事务 每个事务都包装在自己的事务中 但整体并未包装在事务中 在 MS SQL
  • 我的 ViewModel 中的 IEnumerable 未随 EditorForModel 显示

    视图模型 Validator typeof ProdutoCategoriaValidator public class ProdutoCategoriaViewModel HiddenInput DisplayValue false pu
  • 为什么PHP的explode错误?

    这是 PHP 代码 var dump value string 103 0e0cU 0Z dddd is moar awesome A6A32C2074B787893DF506F6F466F5919516C44F3 var dump exp
  • Raspberry Pi 无法在 JavaFX 应用程序中隐藏鼠标光标

    目前 我为 Raspberry Pi 3 开发 JavaFX 应用程序 为了在我的 PC 上进行开发 我使用 Ubuntu 16 04 1 OpenJDK 1 8 0 111 和 OpenJFX 8 0 60 对于 Raspberri Pi
  • Oracle 存储过程 OUT 参数

    我有一个存储过程 其 IN OUT 参数声明如下 create or replace PROCEDURE RIFATT SEGN0 INS pIdRifattSegn0 in OUT NUMBER pNumDossier IN VARCHA
  • 如何定义 Swagger 2.0 JSON 来填充 Swagger UI 中的默认主体参数对象?

    我们当前的部署模式要求我手动编写 swagger json 输出 该输出将由我公司使用的基于 Swagger 的 UI 使用 我希望我正在编写的 json 能够提供 默认 值来填充所有输入字段 包括 body 输入参数 的 Swagger
  • 无法通过angularjs在phonegap中显示联系人照片

    我能够从简单的 html 和 javascript 获取并显示联系人照片 但是当我使用 angularjs 模型显示联系人照片时 出现错误 以下是我的源代码 列出我尝试显示联系人的位置 ul class list li class item
  • 如何使用表单从数组动态创建复选框?

    我想使用代码根据传递给函数的数组或对象动态创建复选框 你能修改这个函数来获取数组吗 我有一个脚本 可以根据用户名查找可能的电脑名称并列出匹配项 如果有这个表格 让我能够选择列表中的结果之一作为正确的 PC 以移入正确的容器并安装软件 那就太
  • MySQL 删除重复行

    我有一个评论表 其结构如下 id name email comment 我有很多重复的评论 具有相同的姓名和电子邮件 我需要删除它们 任何人都可以建议我如何使用单个查询来实现此目的 Thanks DELETE FROM comments c
  • 用于在正在运行的 JVM 中打开调试的 Java API [重复]

    这个问题在这里已经有答案了 是否有一种编程方式可以在正在运行的 JVM 实例中打开调试 我正在寻找一个 API 它可以使运行中的 JVM 成为调试服务器 该 API 的作用相当于 Xdebug Xrunjdwp transport dt s
  • 暂停测试执行,直到应用程序空闲

    是否可以实现一些 util 方法来暂停测试 当前线程 执行 直到应用程序空闲 空闲的意思是 1 一段时间内没有GUI事件添加到事件队列中2 在同一时间段内没有工作线程运行任何任务 您能否提供实现 代码片段来跟踪以前的空闲情况 您可以更换Ev
  • 尝试合并 2 个数据帧但出现 ValueError

    这些是我保存在两个变量中的两个数据框 gt print df head gt club name tr jan tr dec year 0 ADO Den Haag 1368 1422 2010 1 ADO Den Haag 1455 14
  • 已删除的数据存储条目重新出现

    我想重新打开已删除的数据存储条目重新出现作为注册用户 老问题可以删除吗 这次我会尽量说得更具体 我遇到以下问题 最初 我将 N 个同类实体放入数据存储中 如下所示 datastore entity MyModel model propert
  • Perl 函数定义中的 $;$ 是什么意思? [复制]

    这个问题在这里已经有答案了 我得到以下代码 sub deg2rad my d DR 0 1 d rad2rad d 谁能告诉我什么 means 子声明后面括号中的内容称为原型 它们的解释在perlsub 一般来说 你can使用它们来限制编译
  • Android 蓝牙:软件导致连接中止

    每当我尝试将 Android 设备连接到支持蓝牙的设备时 我都会遇到异常 它正在连接 并且在一分钟之内就出现异常 要使用 BLuettoth 设备 Spp 配置文件 进行连接 我正在使用 Method m m mmDevice getCla
  • 在Java中将标签设置为图像格式问题

    我正在尝试将 java 程序中的标签设置为图像 然而 它似乎不适用于 bmp 图像 我正在寻找一个转换器 它允许我将图像从 bmp 转换为具有相同文件名的 jpg 这个转换器需要由java程序控制 其中有需要转换的图像的名称和位置 任何帮助
  • 使用 16 位整数的重要性

    开发人员在编写代码时如何认真考虑使用 16 位整数 自从我开始编程以来 我一直在使用 32 位整数 而且我并没有真正考虑过使用 16 位 声明 32 位 int 非常容易 因为它是大多数语言的默认值 使用 16 位整数部分来节省一点内存有什
  • 将Json反序列化为Asp.net中实现Ienumerable的类

    我有下面的函数 它获取 facebook 数据并将其作为字符串返回 public static string GetUserNewsFeed string strAccessToken Dictionary