Я пытаюсь получить эту информацию из MongoDB, и она дает мне этот JSON для решения:
{
\"values\":
[
{ \"_id\" : { \"$oid\" : \"5ccf1bc55d0e652b8a6c9153\"} , \"Id\" : 5 ,\"Name\" : \" palups\"} ,
{ \"_id\" : { \"$oid\" : \"5ccf24e91f6e4f29b5ede29b\"} , \"Id\" : 2 ,\"Name\" : \"Maria\"} ,
{ \"_id\" : { \"$oid\" : \"5ccf25071f6e4f29b5ede2c5\"} , \"Id\" : 3 ,\"Name\" : \"marcela\"}
]
}
Проблема в том, что вложенный объект $ oid.Мне удалось получить Идентификатор и Имя, но не вложенный объект.
Вот что я попробовал:
[System.Serializable]
public class ScoreData {
public List<Values> values = new List<Values>();
}
[System.Serializable]
public class Values
{
public _id oid;
public int Id;
public string Name;
}
[System.Serializable]
public class _id
{
public string m_oid;
}
Часть выше - это классы, которые я создал, и код нижеэто функция, предоставленная мне, с моими дополнениями, чтобы она работала так, как я хочу:
IEnumerator getProductsInDB(){
UnityWebRequest unityWebRequest = UnityWebRequest.Get (baseURL+databaseName+"/collections/"+collectionName+"?apiKey=" + apiKey);
yield return unityWebRequest.Send();
if(unityWebRequest.isNetworkError || unityWebRequest.isHttpError) {
Debug.Log(unityWebRequest.error);
}
else {
//Debug.Log (unityWebRequest.downloadHandler.text);
jsonString = unityWebRequest.downloadHandler.text;
string JSONToParse = "{\"values\":" + jsonString + "}"; //estava faltando no json ???
ScoreData loadedScoreData = JsonUtility.FromJson<ScoreData>(JSONToParse);
for (int i = 0; i <= loadedScoreData.values.Count; i++)
{
Debug.Log("score: " + loadedScoreData.values[i].oid.m_oid);
Debug.Log("score: " + loadedScoreData.values[i].Id);
Debug.Log("name: " + loadedScoreData.values[i].Name);
Debug.Log("****************************************");
}
}
}
Вот что я получаю на консоли Unity:
(как видите, первая строка пуста).
оценка:
UnityEngine.Debug: Log (Object)
оценка: 999
UnityEngine.Debug: Log (Object)
name: Marcela
UnityEngine.Debug: Log (Object)
Итак, как разобратьвложенное значение или что я делаю не так?