2016-03-31 28 views
0

をマッチング後の文字の最初の発生時に文字列:私はあなたが上記参照形式でJSONオブジェクトのリストを持っていると私はでオブジェクトを分割する必要が分割データの文字列

{ 
    \"value\": 17.11, \"year\": 2015, \"sub\": [ {\"x\": 0, \"y\": 0.94 }, {\"x\": 1, \"y\": 1.08 }] 
} 
, 
{ 
    \"value\": 17.23, \"year\": 2015, \"sub\": [ {\"x\": 0, \"y\": 0.23 }, {\"x\": 1, \"y\": 1.22 }] 
} 

'、'の2つのオブジェクトの間。問題は、ファイル内に他のカンマがあることです。実際にJSONをListにシリアル化する以外に、これを行うための他の方法はありますか?私のような文字列配列にデータを取得しようとしている

string[] split = json.split(','); 

上記のデータは、実際にすべて1行に来ていることに注意してください、任意の改行、タブ、またはものはありません。私はそれをより読みやすくするために上記で構成しました。

+3

私は必要な努力をしていると言いますが、それだけで逆シリアル化することもできます。リストには何個のオブジェクトがありますか?数百未満の場合、それをデシリアライズするのは最小限です – Rhumborl

+0

あなたのサンプルのように、それぞれのjsonオブジェクトは1行にありますか? – derloopkat

答えて

2

あなた自身のパーサーを書くことは難しいでしょう。 JSONパーサーを使用した方がはるかに簡単です。あなたのフォーマットは有効なJSONではありませんが、周囲は[]です。したがって、これらの文字を挿入すると、実際のパーサを使用できるはずです。

using Newtonsoft.Json 

// ... 

var objects = JsonConvert.DeserializeObject<List<SomeClass>>("[" + json + "]"); 
+0

それはあまりにもトリッキーなことになった。私はNewtonsoft.Jsonを使用せず、代わりにJavascriptSerializerのために解決しましたが、これは最善の方法でした。ブラケットについてのヒントは+1です。 – RizJa