1max1 писал(а):там еще происходят операции с правкой json файла, так как он приходит некорректный (ну вроде как).
В чем некорректность я так и не понял.
Не можешь всунуть чистый массив сразу в джесон? Ну так оберни в структуру как я в примере выше...
Так я обернул, но он не позволяет дальше преобразовать в вектор3 или хотябы в массив трех float.
как мне это:
{"positions":[[-0.015981, -0.455174, 0.890259], [-0.026143, -0.446387, 0.894458], [-0.022306, -0.435257, 0.900030], [-0.008271, -0.432962, 0.901374], [0.001912, -0.441713, 0.897154], [-0.001959, -0.452797, 0.891611]]}
преобразовать в Vector3[]?
Если сделать так, то не работает:
Используется csharp
void Awake(){
string json = "{\"positions\":[[-0.015981, -0.455174, 0.890259], [-0.026143, -0.446387, 0.894458],
[-0.022306, -0.435257, 0.900030], [-0.008271, -0.432962, 0.901374],
[0.001912, -0.441713, 0.897154], [-0.001959, -0.452797, 0.891611]]}";
Container c = JsonUtility.FromJson<Container>(json);
print(c.positions[0]);
}
[System.Serializable]
public struct Container
{
public Vector3[] positions;
}
Вариант с оберткой здесь так же не работает:
Используется csharp
void Awake(){
string json = "{\"positions\":[[-0.015981, -0.455174, 0.890259], [-0.026143, -0.446387, 0.894458],
[-0.022306, -0.435257, 0.900030], [-0.008271, -0.432962, 0.901374],
[0.001912, -0.441713, 0.897154], [-0.001959, -0.452797, 0.891611]]}";
Vector3[] arr = JsonHelper.FromJson<Vector3>(str);
print(arr[0]);
}
public T[] FromJson<T> (string json)
{
Wrapper<T> wrap = JsonUtility.FromJson<Wrapper<T>>(json);
return wrap.Array;
}
[System.Serializable]
private class Wrapper<T>{
public T[] positions;
}
В твоем примере не используется json такого формата - как тот что я написал выше. Если ты попробуешь его таким же образом преобразовать в vector3[] - то не получится.
Лично я не смог найти способ из json вытащить массив массивов адекватным образом. Если ты знаешь - буду премного благодарен.
Ну либо посоветуйте кто-нибудь адекватную либу =)