在阵列中存储的唯一任务ID(Storing only task id in an array)

2019-09-24 04:48发布

我创建一个程序,可自动处理与嘉尚一些功能对我的工作,但我有点卡住了。 我能够多任务提交到工作空间和检索任务ID每个的,但不知道如何采取只响应的ID部分,并将其存储在C#中的数组或列表。

从对GET响应/tasks?workspace=<workspace-id>&assignee=me是:

{"data":[{"id":2177890732156,"name":"<name of my task>"}]}

我想从我的所有任务的ID号码存储到一个数组,所以我可以执行addProject PUT他们每个人。

我使用串行化器把数据元素到适当的词典张贴但不知道是否有一种方法来扭转并解析仅响应的INT部分,它存储在数组中,并调用它备份。

串行代码如下:

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();

Answer 1:

这当然是可以使用正则表达式的一些福来解析出ID字段并保存它们。 然而,这kindof讨厌的 - 结构化数据格式,如JSON和XML存在有他人的解析库的目的做肮脏的工作适合你。

因此,建议1:使用JSON.Net而不是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数组。



文章来源: Storing only task id in an array
标签: c# asana