JSON.Net Deserialize psuedo-JSON Stream [дубликат]

Я знаю, что это должно звучать глупо ... но редко бывает.

Проверьте, пытаетесь ли вы выполнить php из

**http://localhost/info.php**

, а не из

file:///var/www/info.php

ps> вы можете заметить, что если вы пишете из shell

php info.php 

, то ответьте на код (это означает php-функции) ..

12
задан Andrey Shchekin 28 October 2014 в 06:43
поделиться

1 ответ

Я думаю, что если вы немного измените свой цикл, все должно работать:

public IEnumerable<TResult> ReadJson<TResult>(Stream stream)
{
    var serializer = new JsonSerializer();

    using (var reader = new StreamReader(stream))
    using (var jsonReader = new JsonTextReader(reader))
    {
        jsonReader.SupportMultipleContent = true;

        while (jsonReader.Read())
        {
            yield return serializer.Deserialize<TResult>(jsonReader);
        }
    }
}

Обратите внимание, что вы должны перебирать IEnumerable<TResult>, пока Stream, переданный этому методу, открыт:

using (var stream = /* some stream */)
{
    IEnumerable<MyClass> result = ReadJson<MyClass>(stream);

    foreach (var item in result)
    {
        Console.WriteLine(item.MyProperty);
    }
}

Пример: https://dotnetfiddle.net/Y2FLuK

11
ответ дан Andrew Whitaker 20 August 2018 в 22:03
поделиться
  • 1
    Спасибо, я пробовал это раньше, но после вашей скрипки я проверил свой поток JSON и обнаружил, что это не так, как ожидалось (разделение запятой вместо разделителя). Так что это действительно правильный ответ, мне просто нужно было исправить поток JSON. – Andrey Shchekin 28 October 2014 в 21:49
Другие вопросы по тегам:

Похожие вопросы: