C# 仅在数组中存储任务id

C# 仅在数组中存储任务id,c#,asana,C#,Asana,我正在为我的工作场所创建一个程序,该程序将使用Asana自动化一些功能,但我有点卡住了。我能够将多个任务提交到一个工作区并检索每个任务的任务ID,但我想知道如何仅获取响应的ID部分,并将其存储到C#中的数组或列表中 获取/tasks?workspace=&assignee=me的响应是: {"data":[{"id":2177890732156,"name":"<name of my task>"}]} 我将请求存储在字节数组中,如下所示: public static string

我正在为我的工作场所创建一个程序,该程序将使用Asana自动化一些功能,但我有点卡住了。我能够将多个任务提交到一个工作区并检索每个任务的任务ID,但我想知道如何仅获取响应的ID部分,并将其存储到C#中的数组或列表中

获取
/tasks?workspace=&assignee=me
的响应是:

{"data":[{"id":2177890732156,"name":"<name of my task>"}]}
我将请求存储在字节数组中,如下所示:

public static string GetJsonByObject(object _object)
    {
        /// Serialize to JSON
        DataContractJsonSerializer serializer = new DataContractJsonSerializer(_object.GetType());
        MemoryStream ms = new MemoryStream();
        serializer.WriteObject(ms, _object);
        return Encoding.Default.GetString(ms.ToArray());
    }
string content;

content = GetJsonByObject(t);
bArrContent = Encoding.UTF8.GetBytes(content);
            request.GetRequestStream().Write(bArrContent, 0, bArrContent.Length);
            request.GetRequestStream().Close();

当然可以使用一些正则表达式fu解析出ID字段并存储它们。然而,这是一种令人讨厌的结构化数据格式,比如JSON和XML,其存在的目的是让其他人的解析库为您完成肮脏的工作

因此,建议1:使用而不是DataContractSerializer。它吸的更少

这导致了建议2:使用库来干净地反序列化数据,然后使用Linq获取ID元素:

JObject jobj = JObject.Parse(serializedData);
UInt64[] idArr = ((JArray)jobj["data"]).Select(jItem => UInt64.Parse((string)((JObject)jItem["id"]))).ToArray();

现在,您应该将ID列表作为idArr中的一个数组。

您的问题有些含糊不清。你是说你已经有了(反序列化)对象的字典,你只想创建一个“id”字段数组?或者,您是否试图从序列化的值构造该数组,而不完全反序列化对象?我还没有对象字典,对于如何创建它以及如何仅将id字段拉入数组感到困惑。对不起,我对C#编程有点陌生,我对这个项目有点“黑”了。非常感谢!这太完美了!