2016-07-29 28 views
1

こんにちは、このJSON行を解析しようとしていますが、私はこれを自動化したいのですが、ファイルの中にこのようなものがいくつかあるので、無効な行を削除して、NewtonsoftオブジェクトをStringにシリアル化します。 JObjectのインスタンスが期待される

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

とにかくあり

{"anotheritem":"value"} 

だから、解析を開始する読み取り可能な有効なJSONにしてターンを削除するには:問題は、JSONを

例は、1行に複数のJSONが含まれていることですファイルS

私はこれらの無効なJSON

を含む複数のファイルをので、私は無効なJSONを検出することができるようになったが、何らかの理由で私はそれを得ることができない私が持っているファイルでそこのStreamReader原因を使用してやってみましたJSONを読むために私は

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

エラーを無効な行を削除するために.removeを使用することができます。

Object serialized to String. JObject instance expected. 

はあなたの時間と助けありがとうございました。

+0

あなたのjsonはちょうど1つの大きな線であるように見えますが、問題のあるものを絞り込むことができますか? –

+0

@ LasseV.Karlsen配列ラッパーまたはセパレータがない2つの異なるオブジェクトがあります。 –

+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配列= JArray.Parse(値); var配列= JArray.Parse(arrrayValue)です。ありがとうございました :) – Premt

関連する問題