JSON.NET c#访问反序列化对象

本文关键字:反序列化 对象 访问 NET JSON | 更新日期: 2023-09-27 17:54:20

我有一些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);

我需要找到一种方法来分离对象并放置在某种数组中,以便我可以获得值。假设我想要控制数组,并在某种循环中访问所有的值。

如有任何建议,不胜感激。

谢谢

JSON.NET c#访问反序列化对象

看看System.Web.Script.Serialization.JavaScriptSerializer

您可以将JSON字符串反序列化为强类型类,如下所示:

数据类:

public class AutocompleteAction
{
    public String action { get; set; }
}

你会有嵌套类。然后语法看起来类似于使用json解析google maps geocode json对对象的响应。净

使用

:

string json = // your json string
JavaScriptSerializer js = new JavaScriptSerializer();
AutocompleteAction jsonObject = js.Deserialize<AutocompleteAction>(json);
switch (jsonObject.action)
{
  //
}

最后我使用了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..
            }