我有一些JSON数据,我已设法获取并放置在动态类型中。
这是它看起来像JSON。
{"fruits":{"a":"orange","b":"banana","c":"apple"},"numbers":[1,2,3,4,5,6],"holes":{"0":"first","5":"second","6":"third"}}
这是我如何使用动态类型收集它。
dynamic myObj =JsonConvert.DeserializeObject(output);
我需要找到一种方法来分离对象并放置在某种数组中,这样我就能掌握这些值。假设我想获取孔数组并获得对某种循环中所有值的访问权。
非常感谢任何建议。
谢谢
答案 0 :(得分:3)
查看System.Web.Script.Serialization.JavaScriptSerializer
。
您可以将JSON字符串反序列化为强类型类,如下所示:
数据类:
public class AutocompleteAction
{
public String action { get; set; }
}
您将拥有嵌套类。然后语法看起来与此parse google maps geocode json response to object using Json.Net
类似用法:
string json = // your json string
JavaScriptSerializer js = new JavaScriptSerializer();
AutocompleteAction jsonObject = js.Deserialize<AutocompleteAction>(json);
switch (jsonObject.action)
{
//
}
答案 1 :(得分:0)
我最后使用Json.NET做到了这一点。希望它对某人有用。会喜欢评论和批评,因为可能有更好的方法。
string output = writeClient.Get<string>("mykey");
JObject myObj = (JObject)JsonConvert.DeserializeObject(output);
JObject fruits = myObj["fruits"] as JObject;
JObject holes = myObj["holes"] as JObject;
foreach (var fruit in fruits)
{
MyTestClass myClass = new MyTestClass();
myClass.myKey = fruit.Key;
myClass.myVal = fruit.Value.ToString();
}
JToken nums = myObj["nums"];
IEnumerable<string> allString = nums.Children().Values<string>();
foreach (var myVal in allString)
{
// do something..
}