反序列化 Json 数组 Windows Phone 8.0

Deserialise Json Array Windows Phone 8.0

我的 JsonArray 是

   [
  {
    "A": "asdasd",
    "B": "asdasd",
    "C": "43543543",
    "D": "fdgdfgt54654",
    "E": "54tg54g54g"
  },
  {
    "A": "45tg54tg54g",
    "B": "g45erg45g",
    "C": "rhtfg4hg4g",
    "D": "hdfhg45yg",
    "E": "fgh45yg45"
  },
  {
    "A": "trh4yh45yg",
    "B": "gy45g4554egt5",
    "C": "54hg4rg45g",
    "D": "gtrg45g",
    "E": "fdg54g45g545454"
  }

]

而我的 Class 是

public class RootObject
{
    public string A { get; set; }
    public string B { get; set; }
    public string C { get; set; }
    public string D { get; set; }
    public string E { get; set; }
}

我无法将此 json 数组反序列化为 RootObject Class...所以请帮忙...我尝试访问数组的各个成员,但那是一个很长的方法...所以请帮忙..

您的 class 应该是:

public class RootObject
{
    public string details { get; set; }
    public string deal { get; set; }
    public string company_name { get; set; }
    public string validity { get; set; }
    public string coupon { get; set; }
}

反序列化 json 字符串:

JsonConvert.DeserializeObject<List<RootObject>>(json string);

您的 json 对象包含您要反序列化的对象的列表。

基本上你需要告诉反序列化器你有一个根对象列表,即List<RootObject>然后一旦你反序列化到这个对象你就可以迭代其中的每个项目。

像这样的东西有效:

using System;
using System.Collections.Generic;
using System.Web.Script.Serialization; // Contains JavaScriptSerializer from System.Web.Extensions

namespace Tester
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
            deserialize();
        }

        public static void deserialize()
        {

            string jsonRaw = @"[
            {
                'A': 'asdasd',
                'B': 'asdasd',
                'C': '43543543',
                'D': 'fdgdfgt54654',
                'E': '54tg54g54g'
            },
            {
                'A': '45tg54tg54g',
                'B': 'g45erg45g',
                'C': 'rhtfg4hg4g',
                'D': 'hdfhg45yg',
                'E': 'fgh45yg45'
            },
            {
                'A': 'trh4yh45yg',
                'B': 'gy45g4554egt5',
                'C': '54hg4rg45g',
                'D': 'gtrg45g',
                'E': 'fdg54g45g545454'
            }
        ]";

            List<RootObject> rObjects = new JavaScriptSerializer().Deserialize<List<RootObject>>(jsonRaw);
            foreach (var o in rObjects)
            {
                Console.WriteLine(o.A + ", " + o.B + ", " + o.C + ", " + o.D + ", " + o.E);
            }
        }
    }

    public class RootObject
    {
        public string A { get; set; }
        public string B { get; set; }
        public string C { get; set; }
        public string D { get; set; }
        public string E { get; set; }
    }
}

以上代码输出:

asdasd, asdasd, 43543543, fdgdfgt54654, 54tg54g54g
45tg54tg54g, g45erg45g, rhtfg4hg4g, hdfhg45yg, fgh45yg45
trh4yh45yg, gy45g4554egt5, 54hg4rg45g, gtrg45g, fdg54g45g545454
var syncEntitiesArray = [{"EntityName":"Bulletins","LastSyncDate":"20150525_072418"},{"EntityName":"DatasetFilters","LastSyncDate":"20150525_072418"},{"EntityName":"Datasets","LastSyncDate":"20150525_072418"},{"EntityName":"DatasetItems","LastSyncDate":"20150525_072418"}]

public class DateModel
{
    public string EntityName { get; set; }
    public string LastSyncDate { get; set; }
}

IList<DateModel> myObject = JsonConvert.DeserializeObject<IList<DateModel>>(syncEntitiesArray);

foreach (var obj in myObject)
  {
       string nodeName = obj.EntityName;
       string nodeValue = obj.LastSyncDate;
  }

这非常适合我。希望这对您也有帮助。谢谢!