2014-09-29 18 views
4

我想對REST API執行JSON get請求。
當我發佈一個資源,然後立即使用get,我在我的響應中得到一個JSON對象。
當我發佈資源並使用get後,然後JSON對象變成一個數組。
下面是一些例子迴應,我得到:Json從array <>對象的GET請求更改

文章後,把:

{ 
    "metadata":{ 
     "entry":[ 
     { 
      "@key":"x", 
      "$":"y" 
     }, 
     { 
      "@key":"x", 
      "$":"y" 
     } 
     ] 
    } 
} 

只文章後:

{ 
"metadata": { 
     "entry": { 
      "@key": "cachingEnabled", 
      "$": "false" 
     } 
    }, 
} 

我可以得到它的兩種工作使用的以下任一碼。

JSON陣列:

public class MetaData 
{ 
    [JsonProperty("entry")]  
    public List<EntryType> Entry { get; set; } 
} 

JSON對象:

public class MetaData 
{ 
    [JsonProperty("entry")]  
    public EntryType Entry { get; set; } 
} 

我如何在C#地圖這一個屬性?

+1

將該屬性定義爲'List ',然後使用JsonConverter檢測單個實例並將其放入列表中。請參閱[如何使用JSON.net處理同一個屬性的單個項目和數組](http://stackoverflow.com/q/18994685/10263) - 接受的答案有一個已寫入的通用轉換器,該轉換器應該適用於您。 – 2014-09-29 17:15:19

回答

0

你可以把它映射到dynamic類型,它可以讓編譯器推遲在運行時類型:每次反序列化Entry時間可能不同類型的

public class MetaData 
{ 
    [JsonProperty("entry")]  
    public dynamic Entry { get; set; } 
} 

這樣。在反序列化您的JSON之後,您必須跟蹤它的類型。