2016-12-08 19 views
0

IDとコンテンツの2つのフィールドを持つJsonデータがあります。コンテンツは、別のJsonデータを格納します。私は最初の(外側の)Jsonのみを逆直列化したいそれは可能ですか?CネストされたJsonデータを逆シリアル化する方法

Iはtest.Json1の値は[0] .Contentは{ "Json2":[{ "TEST1": "234"、 "TEST2": "456"}]}に等しい期待
{"Json1": 
[ 
{"ID":"123", 
"Content":"{"Json2":[{"test1":"234","test2":"456"}]}"} 
]} 

public class testing 
{ 
    public List<testing2> Json1 { get; set; } 
} 
public class testing2 
{ 
    public string ID { get; set; } 
    public string Content { get; set; } 
} 

var serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); 
testing test= serializer.Deserialize<testing>(JsonData); 

デシリアライゼーション後。ただし、「無効なオブジェクトが渡されました、 ':'または '}'は予期しない例外です。上記のコードを入力するよう求められます。

+0

とデシリアライズの例ですか? – mybirthname

+4

あなたのコンテンツはjsonでも有効ですか?あなたが引用符をエスケープしていないように見えるので、文字列が終わったとき、または内部からの単なる引用符がどのようにつながっているかをどうやって知っていますか? – Charleh

+0

ここでhttp://jsonlint.com/を検証し、ここに有効なJSONを投稿してみてください – Artiom

答えて

2

上記のとおり、あなたのjsonは無効です。 \で引用符をエスケープ、ここで

var [email protected]"{ 
    ""Json1"": [{ 
    ""ID"": ""123"", 
    ""Content"": ""{\""Json2\"":[{\""test1\"": \""234\"",\""test2\"":\""456\""}]}"" 
    }] 
    }"; 

はNewtwonJson

newtonsoft.json使用しないのはなぜ
var instance = JsonConvert.DeserializeObject<testing>(jsonData); 
関連する問題