2016-03-31 26 views
0

eşleşen sonra bir karakterin ilk geçtiği bir dize: Ben yukarıda gördüğünüz bir biçimde JSON nesneleri bir liste var ve ben nesneleri bölmek gerekirBölünmüş Veri dize

{ 
    \"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 }] 
} 

iki nesne arasında ','. Sorun, dosyada mevcut başka virgüllerin olmasıdır. JSON'u bir Listeye serileştirmenin dışında, bunu yapmak için başka bir yol var mı? Ben böyle bir dize diziye veri almaya çalışıyorum

: Yukarıdaki veriler tek bir satırda geliyor aslında olduğunu

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

Not, herhangi bir satır araları, sekmeler, ya da bir şey bulunmamaktadır . Onu daha okunaklı hale getirmek için yukarıda düzenledim.

+3

İstenilen çaba için şunu söyleyeyim, bunu sadece seri hale getirebilirsiniz. Listede kaç nesne var? Eğer birkaç yüz altından daha azsa, seri hale getirme en az – Rhumborl

+0

Her json nesnesi, örneğinizde olduğu gibi tek bir satırda mı? – derloopkat

cevap

2

Kendi çözümleyicinizi yazmak zor olacaktır. JSON ayrıştırıcısı kullandıysanız çok daha kolay olurdu. Biçiminiz geçerli bir JSON değil, ancak çevreleyen [] ile olacaktır. Bu karakterleri eklerseniz, gerçek ayırıcıyı kullanabilmeniz gerekir:

using Newtonsoft.Json 

// ... 

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

Sonunda çok zor oldu. Her ne kadar Newtonsoft.Json kullanmamış ve bunun yerine sadece JavascriptSerializer için yerleşmiş olsa da, bu konuda gitmenin en iyi yoluydu. Parantez ile ilgili ipucu için +1. – RizJa