Как получить данные из заданного формата JSON с помощью JsonUtility в Unity с использованием C #? - PullRequest
0 голосов
/ 20 декабря 2018
{
"page": 2,
"per_page": 3,
"total": 12,
"total_pages": 4,
"data": [
    {
        "id": 4,
        "first_name": "Eve",
        "last_name": "Holt",
        "avatar": "https://s3.amazonaws.com/uifaces/faces/twitter/marcoramires/128.jpg"
    },
    {
        "id": 5,
        "first_name": "Charles",
        "last_name": "Morris",
        "avatar": "https://s3.amazonaws.com/uifaces/faces/twitter/stephenmoon/128.jpg"
    },
    {
        "id": 6,
        "first_name": "Tracey",
        "last_name": "Ramos",
        "avatar": "https://s3.amazonaws.com/uifaces/faces/twitter/bigmancho/128.jpg"
    }
]

}

Приведенный выше JSON был форматом, который я пытался проверить. Поэтому я добавил его в строку, но он показывал ошибки. Поэтому я отредактировал его в следующем коде, удалил двойные кавычки и добавил одиночныйкавычки теперь ошибка исчезла. Не обязательно использовать одинарные или двойные кавычки.

string JSONDataString;
JSONDataString = @"{
'page': 2,
'per_page': 3,
'total': 12,
'total_pages': 4,
'data': [
    {
        'id': 4,
        'first_name': 'Eve',
        'last_name': 'last_name',
        'avatar': 'https://s3.amazonaws.com/uifaces/faces/twitter/marcoramires/128.jpg'
    },
    {

        'id': 5,
        'first_name': 'Charles',
        'last_name': 'Morris',
        'avatar': 'https://s3.amazonaws.com/uifaces/faces/twitter/stephenmoon/128.jpg'

    },
    {

        'id': 6,
        'first_name': 'Tracey',
        'last_name': 'Ramos',
        'avatar': 'https://s3.amazonaws.com/uifaces/faces/twitter/bigmancho/128.jpg'

    }
]
}";

Я использовал @ в начале строки. Я не знаю, почему я использовал его, как я видел в некоторых примерах. Я удалил все двойные кавычки и добавил одиночные кавычки. Я создал другой класс для обработки данных из JSON, который приведен ниже

public class DataHandler {


public int id;
public string firstname;
public string lastname;
public string avatar;

public DataHandler(int ID,string FName,string LName,string Avatar)
{
    this.id = ID;
    this.firstname = FName;
    this.lastname = LName;
    this.avatar = Avatar;

}


}

Как извлечь данные из первого массива и второго массива. Первый массивэлементы означает (page, per_page ... total_pages). Второй массив означает (id, first_name, last_name, аватар из трех групп)?

var obj = JsonUtility.FromJson<DataHandler>(JSONDataString);

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Ваш класс, который представляет объект, не прав.Вы можете создать класс из json в визуальной студии «Правка> Специальная вставка> Вставить JSON как классы».

В вашем случае это:

public class Rootobject
    {
        public int page { get; set; }
        public int per_page { get; set; }
        public int total { get; set; }
        public int total_pages { get; set; }
        public Datum[] data { get; set; }
    }

    public class Datum
    {
        public int id { get; set; }
        public string first_name { get; set; }
        public string last_name { get; set; }
        public string avatar { get; set; }
    }

Ваша строка JSON "JSONDataString" выглядитхорошо, так что просто используйте "Newtonsoft.Json" nuget для разбора объекта:

var data = JsonConvert.DeserializeObject<Rootobject>(json);
0 голосов
/ 20 декабря 2018

Класс, представляющий JSON, неверен.Смотрите правильное представление ниже:

public class Datum
{
    public int id { get; set; }
    public string first_name { get; set; }
    public string last_name { get; set; }
    public string avatar { get; set; }
}

public class RootObject
{
    public int page { get; set; }
    public int per_page { get; set; }
    public int total { get; set; }
    public int total_pages { get; set; }
    public List<Datum> data { get; set; }
}

Не забудьте пометить ваш класс как сериализуемый.Используйте атрибут:

[System.Serializable]

Использование

RootObject root=JsonUtility.FromJson<RootObject>(jsonString);
    foreach(var item in root.data){
    Debug.Log(item.id);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...