使用Newtonsoft在c#中反序列化JSON数组

时间:2016-08-23 15:03:58

标签: c# json

我只是尝试反序列化一个Json数组,但它不起作用。 我可以在输出框中阅读以下消息:

  

“Newtonsoft.Json.JsonReaderException:无效的JavaScript属性   标识符字符:'。路径'[0]',第2行,第37位。“

我的代码:

using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using Newtonsoft;
using System.Collections.Generic;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

namespace JsonTest
{
    [Activity(Label = "JsonTest", MainLauncher = true, Icon = "@drawable/icon")]
    public class MainActivity : Activity
    {

        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);

            // Get our button from the layout resource,
            // and attach an event to it
            Button button = FindViewById<Button>(Resource.Id.MyButton);

            button.Click += delegate
            {
                string json = @"[{
                                   id': '1',
                                   'nom': 'zooz',
                                   'prenom': 'Jack'                                 
                                 }, {
                                   'id': '2',
                                   'nom': 'toto',
                                   'prenom': 'Blaireau'                                 
                                 }]";

                var a = JsonConvert.DeserializeObject<List<Person>>(json);
                //JArray b = JArray.Parse(json);


               Console.WriteLine(a);
                // james@example.com};
            };
        }

        public class Account
        {
            public string id { get; set; }
            public string nom { get; set; }
            public string prenom { get; set; }
        }

        public class Person
        {
            public Account person;
        }


    }
}

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

ID

中缺少单引号
string json = @"[{
                   'id': '1',
                   'nom': 'zooz',
                   'prenom': 'Jack'                                 
                  }, 
                  {
                    'id': '2',
                    'nom': 'toto',
                    'prenom': 'Blaireau'                                 
                  }]";

模型Person也需要保留Account

的列表
 public class Person
  {
      public List<Account> person;
  }

答案 1 :(得分:0)

您的JSON缺少单引号,它也与List<Account>而不是List<Person>相对应。此JSON应成功反序列化为List

[{ 'person':{
   'id': '1',
   'nom': 'zooz',
   'prenom': 'Jack'                                 
 }}, { 'person': {
   'id': '2',
   'nom': 'toto',
   'prenom': 'Blaireau'                                 
 }}]