вы перебираете
for (int i = 0; i < jsonString.Length; i++)
{
Debug.Log(N[i]["title"]["rendered"]);
Debug.Log(N[i]["acf"]["challenge_id"]);
}
, поэтому этот блок выполняется jsonString.Length
раз ..., что означает для каждого символа в исходном jsonString
.
Он не повторяется по длине N
- коллекции, которую вы хотите зациклить.
Так что вместо этого используйте
for (int i = 0; i < N.Count; i++)
{
Debug.Log(N[i]["title"]["rendered"]);
Debug.Log(N[i]["acf"]["challenge_id"]);
}
или чтобы избежать подобных ошибок
foreach(var n in N)
{
Debug.Log(n["title"]["rendered"]);
Debug.Log(n["acf"]["challenge_id"]);
}
Однако я действительно ожидал бы, что вы получите исключение IndexOutOfRangeException при попытке доступа к N[i]
, если i => N.Length
... но, возможно, это обрабатывается иначе в SimpleJSON .
Обновление
Я обнаружил, что класс JSONObject
имеет следующую реализацию:
public override JSONNode this[int aIndex]
{
get
{
if (aIndex < 0 || aIndex >= m_Dict.Count)
return null;
return m_Dict.ElementAt(aIndex).Value;
}
set
{
//...
}
}
Как вы можете видеть, они просто возвращают null
, если индекс выходит за пределы диапазона.