Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 只读取每个JSON对象的第一个值_C#_Json - Fatal编程技术网

C# 只读取每个JSON对象的第一个值

C# 只读取每个JSON对象的第一个值,c#,json,C#,Json,我将120多个请求(在多个任务之间)发送到 (200个对象)我的目标是只获取名称,而不触及其他对象 public async Task<List<string>> ZwrocNazwe(string zapytanie) { var listaNazw = new List<string>(); var s = await _klientHttp.GetStreamAsync(zapytanie

我将120多个请求(在多个任务之间)发送到 (200个对象)我的目标是只获取名称,而不触及其他对象

public async Task<List<string>> ZwrocNazwe(string zapytanie)
        {
            var listaNazw = new List<string>();

            var s = await _klientHttp.GetStreamAsync(zapytanie);
            using (StreamReader sr = new StreamReader(s))
            using (JsonReader reader = new JsonTextReader(sr))
            {
                reader.SupportMultipleContent = true;

                while (reader.Read())
                {
                    if (reader.TokenType != JsonToken.StartObject) continue;
                    reader.Read();
                    if (reader.Value.ToString() != "name") continue;
                    reader.Read();
                    listaNazw.Add(Convert.ToString(reader.Value));
                    reader.Skip();
                }
            }
            return listaNazw;
        }
公共异步任务ZwrocNazwe(字符串zapytanie)
{
var listaNazw=新列表();
var s=await_klientHttp.GetStreamAsync(zapytanie);
使用(StreamReader sr=新StreamReader)
使用(JsonReader=newjsontextreader(sr))
{
reader.SupportMultipleContent=true;
while(reader.Read())
{
如果(reader.TokenType!=JsonToken.StartObject)继续;
reader.Read();
如果(reader.Value.ToString()!=“name”)继续;
reader.Read();
Add(Convert.ToString(reader.Value));
reader.Skip();
}
}
返回listaNazw;
}

我工作,但比我预期的要花更多的时间。我做错什么了吗

这是一个组合结果的函数:

    public async Task<List<string>> ZwrocListePrzedmiotow(List<int> listaId, string sciezka)
    {
        // Groups ids of items into groups of 200. 
        var listaZapytan = ZwrocListeZapytan(listaId);

        // Makes request per each group to get item info.
        var listaZadan = new List<Task<List<string>>>();
        foreach (var zapytanie in listaZapytan)
            listaZadan.Add(
                ZwrocNazwe(sciezka + zapytanie));

        // Combines results.
        await Task.WhenAll(listaZadan);
        var listaPrzedmiotow = new List<string>();
        foreach (var zadanie in listaZadan)
            listaPrzedmiotow.AddRange(zadanie.Result);

        return listaPrzedmiotow;
    }
public异步任务zwroclistprzedmiotow(列表帮助,字符串sciezka)
{
//将项目ID分组为200个组。
var listaZapytan=zwroclistzapytan(listaId);
//为每个组发出请求以获取项目信息。
var listaZadan=新列表();
foreach(listaZapytan中的var zapytanie)
listaZadan.添加(
ZwrocNazwe(sciezka+zapytanie));
//合并结果。
等待任务。WhenAll(listaZadan);
var listaPrzedmiotow=新列表();
foreach(listaZadan的var zadanie)
ListapRzedMitow.AddRange(zadanie.Result);
返回列表aprzedmitow;
}

有趣的是,自从我开始使用
GetStreamAsync
而不是
GetStringAsync
以来,我等待结果的时间甚至更长。

“比我预期的要长”。这至少可以说是相当模糊的。你的期望是什么,你经历的时间是什么?HTTP请求是慢的部分,还是处理它的代码?每个请求中的数据有多大?客户端和服务器之间的网络速度是多少?我们不能说你是否做错了什么,因为我们不知道你的期望是什么,也不知道它们是否现实。我意识到这一点。我给您提供了API的链接,以便您可以查看数据大小。下载速度可能会有所不同,因为它是宿舍中的一个网络。你看到代码中有任何缺陷吗?恕我直言,你应该在问题中包含相关信息,而不是期望人们从中得到它。请问数据的大小是多少?120个请求中的每一个都是相同的吗?你还没有告诉我们需要多长时间,或者你预计需要多长时间,或者我问的任何其他问题。代码没有明显的错误,它显然是这样工作的,但是任何优化或重新安排它的潜力(或其他方面)取决于您没有告诉我们的事情。另外,为什么您需要请求120次?