Десериализация файла JSON - PullRequest
0 голосов
/ 09 мая 2018

У меня есть данные JSON, которые были сделаны из Unity.

{
"dataFile": {
    "date": "onsdag 9. mai 2018",
    "time": "16.32.01",
    "points": [
        {
            "m_Position": {
                "x": 89.3330078125,
                "y": 41.69880676269531,
                "z": 49.13698196411133
            }
        }
    ]
}

Я видел этот метод для десериализации данных JSON:

string json = @"{
  'Email': 'james@example.com',
  'Active': true,
  'CreatedDate': '2013-01-20T00:00:00Z',
  'Roles': [
    'User',
    'Admin'
  ]
}";

Account account = JsonConvert.DeserializeObject<Account>(json);
Console.WriteLine(account.Email);

Но я не могу найти способ добавить свои данные (первый пример кода) в " string json " без ошибок. Данные json имеют следующие разделы: dataFile, points и m_position, поэтому я думаю, что они не работают.

Кто-нибудь знает, как я могу десериализовать мои данные JSON?

Я попытался изменить "с", и это сделало его безошибочным

string json = @"{
'dataFile': {
    'date': 'onsdag 9. mai 2018',
    'time': '16.32.01',
    'points': [
        {
            'm_Position': {
                'x': 89.3330078125,
                'y': 41.69880676269531,
                'z': 49.13698196411133
            }
        }
    ]
}
}";

        position pos1 = JsonConvert.DeserializeObject<Position>(json);
        Console.WriteLine(pos1.x);
        Console.ReadLine();

Вот класс Position

public class Position
{
    public string x { get; set; }
}

1 Ответ

0 голосов
/ 10 мая 2018

Использовал опцию в Edit> Paste JSON как классы в класс jsonPosSample

    class jsonPosSample
{
    public Rootobject rootobject;
    public Datafile datafile;
    public Point point;
    public M_Position m_Position;

    public class Rootobject
    {
        public Datafile dataFile { get; set; }
    }

    public class Datafile
    {
        public string date { get; set; }
        public string time { get; set; }
        public Point[] points { get; set; }
    }

    public class Point
    {
        public M_Position m_Position { get; set; }
    }

    public class M_Position
    {
        public float x { get; set; }
        public float y { get; set; }
        public float z { get; set; }
    }
}

Тогда я могу использовать эту строку

var jPosData = JsonConvert.DeserializeObject<jsonPosSample>(strJSON);

Где strJSON - строка с данными json, которые я хочу проанализировать.

Затем я использую свой метод debugOutput для записи первого значения в объекте

debugOutput("date test " + jPosData.datafile.date);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...