2016-07-29 96 views
1

嗨,所以我试图解析这个JSON行,但我有一些其他人是这样的文件这就是为什么我想这样自动化,所以我可以删除无效的行,使文件有效的JSON阅读,问题是,JSON包含1号线多个JSON将Newtonsoft对象序列化为字符串。 JObject实例预计

例子:

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

反正是有删除

{"anotheritem":"value"} 

所以它变成了一个有效的JSON是可读开始解析文件小号

我尝试使用的StreamReader导致有一个文件,我有包含这些无效的JSON

所以我得到它能够检测无效的JSON多个文件,但由于某种原因,我不能让它做阅读JSON这样我就可以使用卸下摆臂删除无效行

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(value);是var array = JArray.Parse(arrrayValue);谢谢 :) – Premt

相关问题