C# 仅在数组中存储任务id
我正在为我的工作场所创建一个程序,该程序将使用Asana自动化一些功能,但我有点卡住了。我能够将多个任务提交到一个工作区并检索每个任务的任务ID,但我想知道如何仅获取响应的ID部分,并将其存储到C#中的数组或列表中 获取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
/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#编程有点陌生,我对这个项目有点“黑”了。非常感谢!这太完美了!