我有一个JArray
,如下所示:
[
{
"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 :(得分: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>();
}
答案 1 :(得分:0)
是的,您可以像这样转换您的JSON:
JObject result = new JObject(
jArray.Select(jt => new JProperty((string)jt["key"], jt["value"]))
);
小提琴:https://dotnetfiddle.net/CcLj3D
注意:对于数组中的所有对象,键必须是不同的,才能使其正常工作。