Массив JSON в массив C # с помощью LitJSON

#c# #arrays #json #unity5 #litjson

#c# #массивы #json #unity3d #litjson

Вопрос:

Я пытаюсь преобразовать массив в формате JSON в своего рода массив (может быть, список?) в C # для игры Unity. Я перепробовал все, что мог придумать, чтобы сделать это, но безуспешно. Вот пример JSON, который я пытаюсь преобразовать, без массива:

     [
        {
            "id": 0,
            "name": "Name 0",
            "description": "Description for id 0 goes here."
        },
        {
            "id": 1,
            "name": "Name 1",
            "description": "Description for id 1 goes here."
        }
    ]
  

И вот как я собираюсь преобразовать его в список на C#:

 using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using LitJson;
using System.IO;

public class BuildingSystem : MonoBehaviour {

    private List<BuildObjects> database = new List<BuildObjects>();
    private JsonData buildingData;

    void Start() {

        buildingData = JsonMapper.ToObject(File.ReadAllText(Application.dataPath   "/StreamingAssets/Buildings.json"));
        ConstructBuildingDatabase();
    }

    void ConstructBuildingDatabase() {
        for (int i = 0; i < buildingData.Count; i  ) {
            database.Add (new BuildObjects ((int)buildingData [i] ["id"],
                (string)buildingData [i] ["name"],
                (string)buildingData [i] ["description"]));
        }
    }
}

public class BuildObjects {
    public int ID { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }

    public BuildObjects (int id, string name, string description) {
        this.ID = id;
        this.Name = name;
        this.Description = description;

    public BuildObjects() {
        this.ID = -1;
    }
}
  

Если бы я хотел добавить новую переменную в JSON, например, так:

 [
    {
        "id": 0,
        "name": "Name 0",
        "description": "Description for id 0 goes here.",
        "properties": [{"bool": true, "string": "text goes here"},{"bool": false, "string": "more text goes here"}]
    }
]
  

Как я мог прочитать это в моем скрипте C #? Я попытался определить «свойства» (с помощью этой строки

 (type)buildingData [i] ["properties"]
  

) в качестве bool[], список со свойствами нового общедоступного класса (на котором я застрял), и от отчаяния, ArrayList и BitArray.

Но пусть вас не останавливает моя неспособность сделать это с помощью этих методов, если вы считаете, что знаете, как это сделать одним из них, то я, вероятно, попробовал неправильно. Я совершенно застрял на этом, любая помощь, которую вы можете оказать, если она будет высоко оценена!

Комментарии:

1. buildingData [i] [«properties»] — это массив объектов, а не bool[]. buildingData[0] [«properties»][1] [«string»] должен вернуть вам «здесь больше текста»

2. я настоятельно рекомендую этот вспомогательный класс json wiki.unity3d.com/index.php?title=JSONObject Делает json в Unity супер простым.

3. Упс, я попробовал bool[], но понял, что мне понадобятся переменные, кроме bools, не следовало их включать.