#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, не следовало их включать.