2016-05-03 32 views
0

我有一個JArray看起來如下:寫JObject

[ 
{ 
    "key": "S8710 Server", 
    "value": "M" 
}, 
{ 
    "key": "Java", 
    "value": "M" 
} 
] 

JArray需要採取鍵和值,轉換成JObject輸出對象如下所示:

{ 
    "S8710 Server": "M", 
    "Java": "M" 
} 

此轉換是否可行?任何幫助將不勝感激。 我試過的是從DataTable中提取密鑰和值,然後序列化結果。然後我嘗試了JObject.Parse

var skillList = from skill in ds.Tables[4].AsEnumerable() 
       where skill.Field<Int64>("ResumeID") == applicantValue.ResumeID 
       select new clsResume.ExtractRatingInfo 
       { 
        key = skill.Field<string>("Skill"), 
        value = skill.Field<string>("SkillRating") 
       }; 

string skillResult = JsonConvert.SerializeObject(skillList, Newtonsoft.Json.Formatting.None); 

JObject obj = JObject.Parse(skillResult); 
+0

@bit我試圖serailize包含鍵和值的數據表。並嘗試JObject.Parse –

+0

是的,這是非常可能的,但請你告訴我們你到現在爲止嘗試了什麼。一些代碼會很好。 – Manish

回答

0

是的,你可以改變你這樣的JSON:

JObject result = new JObject(
    jArray.Select(jt => new JProperty((string)jt["key"], jt["value"])) 
); 

小提琴:https://dotnetfiddle.net/CcLj3D

注:密鑰必須跨越的所有對象不同數組爲此正常工作。

+0

它像一個魅力 –

0

通過將內容字符串傳遞給JArray的靜態方法Parse來創建JToken。 從JToken獲取內部孩子,然後查找屬性及其值。

這樣的:

JArray jArray = JArray.Parse(YOUR_CONTENT_GOES_HERE); 
     foreach (var token in jArray.Children<JToken>()) 
     { 
      var firstProp = token.Children<JProperty>().First(param => param.Name == "S8710 Server"); 
      var firstValue = firstProp.Value<string>(); 

      var secondProp = token.Children<JProperty>().First(param => param.Name == "Java"); 
      var secondValue = firstProp.Value<string>(); 

     }