2016-06-16 9 views
-2

をデシリアライズするためにどのようにJSONは(擬似コード)のようで来ている:このJSON配列

[{one-off intro object}, [{object},{object},{object}]] 

だから、配列の最初のものは、私は興味がないオブジェクトで配列だと私が実際に逆直列化したいオブジェクトでいっぱいになる別の配列です。

JSON.NETでどうすればいいですか?

+1

(何を明らかに示していることは、有効なJSONでないとして、**検証に重点を置い)[MCVE]を提供し、[尋ねる]読んで、あなたがしようとしているものを共有してください。 – CodeCaster

+0

何か試しましたか?すべての特定の問題? – Andrei

+0

まず最初に、[有効なJSONかどうかを確認する](http://jsonlint.com/)(ヒントはありません) – mason

答えて

2

Json.NetのLINQ-to-JSON APIを使用してジョブを実行できます。

例のために、のはあなたのJSONは、次のようになりますと仮定してみましょう:

[ 
    { 
    "blah": "nothing interesting here" 
    }, 
    [ 
    { 
     "id": 1, 
     "name": "foo", 
     "desc": "description of foo" 
    }, 
    { 
     "id": 2, 
     "name": "bar", 
     "desc": "blurb about bar" 
    }, 
    { 
     "id": 3, 
     "name": "baz", 
     "desc": "buzz about baz" 
    } 
    ] 
] 

まず、あなたが興味を持っている内側の配列から項目を保持するクラスを定義

public class Item 
{ 
    [JsonProperty("id")] 
    public int Id { get; set; } 

    [JsonProperty("name")] 
    public string Name { get; set; } 

    [JsonProperty("desc")] 
    public string Description { get; set; } 
} 

これで、JSONを構文解析してJArrayにしてから子配列を取得し、ToObject()を使用してアイテムのリストに変換するだけです。

JArray ja = JArray.Parse(json); 
List<Item> list = ja[1].ToObject<List<Item>>(); 

そこから、通常どおりにアイテムのリストを使用できます。

フィドル:https://dotnetfiddle.net/CaFzux

+0

ありがとう! –

+0

問題ありません。お役に立てて嬉しいです。 –

0

あなたは強く型付けされたキャストを介して、または動的いずれかのオブジェクトの第二セットを取得することができ、ここではそれを動的に行うための一例である:

dynamic jsonArray = JArray.Parse(json);   
dynamic targetJsonObjects = jsonArray[1]; 
+1

ダイナミックは、設計時に構造を知ることができない状況でのみ使用してください。 – mason

0

は、次のような単純なモデルを試したことがありますか?

public class RootObject 
{ 
    public object IntroObject { get; set; } 
    public List<Item> Items { get; set; } 
} 

public class Item 
{ 
    public string WhatEverPropertyYouNeed{ get; set; } 
} 
+0

JSONの外側部分がオブジェクトではなく配列であるため、この構造は実際には機能しません。 –