2017-05-26 73 views
0

檢查以前的答案(3100),無法找到該是否有一個JSON庫C#像C++ SDK休息網站:: JSON ::值,可以反序列化JSON不明

問題的直接的答案:

當試圖從服務器API解析數據時,數據具有許多不同的佈局,具體取決於與請求的資源相關聯的數據。

有些時候,答案是一些入口點的非結構化數據的集合,這些是APP需要解析的。

Json.NET JSON框架.NET從Newtonsoft要求已經定義匹配「以前知道結構」針對序列化JSON被反序列化的先決條件一流。

顯然爲序列化和反序列化任何.NET對象並與.NET對象工作,但不序列化和反序列化JSON在JSON對象,並用像用C++休息那些對象的工作SDK web :: json :: value類。

有些請求已結構化信息,並解決了定義.NET對象和反序列化它們,但當索要額外的資源數據的答案可能是(以及許多其他):

[ 
    null 
    ] 

[ 
    { 
     "item": "value" 
    } 
    ] 

[ 
    { 
     "item": "value" 
    }, 
    { 
     "item2": {} 
    }, 
    { 
     "item3": { 
      "feature": "string feature", 
      "feature2": { 
       "object feature": "large object (replaced by string for simplicity)" 
      } 
     } 
    }, 
    { 
     "item4": "large object (replaced by string for simplicity too)" 
    } 
    ] 

任何人都可以知道是否有一種方法(招,破解版)要做到這一點或方式來支持通用的JSON對象可用於序列化,反序列化和查詢,設置,修改JSON對象?

+1

可以使用Newtonsoft解析在JObject/JArray JSON字符串,而無需預定義的C#類 – Jason

+0

反序列化和序列化是一個格式轉換和從對象,解析是爲json,並且newtonsoft可以解析json,並且可以查詢json而不會將其放入對象中 –

+0

修改了您的問題以取出另一個庫的請求,因爲特別迂迴的人會將其視爲offtopic :) –

回答

0

您可以使用ExpandoObject

var converter = new ExpandoObjectConverter(); 
dynamic obj = JsonConvert.DeserializeObject<ExpandoObject>(json, converter); 
+0

拋出異常: System.InvalidCastException:指定的轉換無效。 at(wrapper castclass)System.Object:__ castclass_with_cache(object,intptr,intptr) at Newtonsoft.Json.JsonConvert.DeserializeObject [T](System.String value,Newtonsoft.Json.JsonConverter []轉換器) – TrustworthySystems

+0

什麼是json你提供給它的輸入? – CodingYoshi

+0

第一個(當沒有額外信息時): ' json =「[null]」; ' – TrustworthySystems