gpt4 book ai didi

c# - 仅将任务 ID 存储在数组中

转载 作者:太空宇宙 更新时间:2023-11-03 13:53:56 26 4
gpt4 key购买 nike

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

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

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

我想将我所有任务的 ID 号存储到一个数组中,这样我就可以对它们中的每一个执行 addProject PUT。

我正在使用序列化程序将数据元素放入适当的字典中以进行 POST,但我想知道是否有一种方法可以将其反转并仅解析响应的 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();

最佳答案

当然可以使用一些 Regex-fu 来解析 ID 字段并存储它们。然而,这有点令人讨厌 - 结构化数据格式(如 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();

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

关于c# - 仅将任务 ID 存储在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12923034/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com