2016-07-29 2 views
1

Привет, я пытаюсь разобрать эту строку JSON, но у меня есть некоторые другие, подобные этим в файлах, поэтому я хочу автоматизировать это, поэтому я могу удалить недопустимые строки, чтобы сделать файл действительным JSON для чтения, проблема заключается в том, что JSON содержит несколько JSON в 1 строкеОбъект Newtonsoft сериализуется в String. Ожидаемый экземпляр JObject

Пример:

{"item":"value"}{"anotheritem":"value"} 

есть в любом случае, чтобы удалить

{"anotheritem":"value"} 

Так превращается в существующий формат JSON, который читается начать разбор файл s

Я попытался сделать с помощью StreamReader вызвать там в файл у меня есть несколько файлов, которые содержат этот недопустимый JSON

Так я получил его, чтобы быть в состоянии обнаружить Invalid JSON, но по какой-то причине я не могу получить его читать JSON, так что я могу использовать .remove, чтобы удалить неверную строку

using (StreamReader r = new StreamReader(itemDir)) 
{ 
    string json = r.ReadToEnd(); 
    if (json.Contains("anotheritem")) 
    { 
     JObject NoGood = JObject.FromObject(json); 
     MessageBox.Show(NoGood.ToString()); 
    } 
} 

ошибка:

Object serialized to String. JObject instance expected. 

Спасибо всем за ваше время и помощь.

+0

Ваш json, кажется, всего лишь одна большая линия, не могли бы вы сузить проблемы с этим? –

+0

@ LasseV.Karlsen Существует два разных объекта без массива-оболочки или разделителя. –

+0

Сделал это меньше, чем было, удалив данные о деталях, теперь он покажет проблему более ясным. – Premt

ответ

2

Если каждый объект бок о бок без пространства или любого другого символа, вы можете преобразовать свою строку в массив json.

string value = "{\"item\":\"value\"}{\"anotheritem\":\"value\"}"; 
string arrayValue = "["+value.Replace("}{", "},{") + "]"; 
var array = JArray.Parse(arrayValue); 
var goopArray = array.OfType<JObject>().Where(o => o.Property("anotheritem") == null); 
+0

Удивительная идея, но var array = JArray.Parse (значение); это var array = JArray.Parse (arrrayValue); Спасибо :) – Premt

Смежные вопросы