Сериализация вложенного JSON массива в Unity3D - PullRequest
1 голос
/ 13 февраля 2020

Я пытаюсь сериализовать файл JSON в Unity, но, поскольку формат JSON - это массив, в котором есть несколько полей, которые являются массивами, я действительно запутался в том, как go делать Это. Я не думаю, что JsonUtility от Unity может работать с вложенными массивами. Я начал изучать использование Mini JSON, но я не уверен, что он сможет обработать этот формат JSON. Заранее спасибо, и любая помощь будет оценена!

Я пытаюсь сериализовать это JSON с C# в Unity:

{
    "people": [
    {
        "person_id": [-1],
        "pose_keypoints_2d": [529.088, 140.144, 0.81357, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 580.005, 222.377, 0.312258, 508.229, 452.092, 0.413092, 458.626, 313.751, 0.741145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 536.951, 108.774, 0.829661, 0, 0, 0, 589.153, 78.7858, 0.81112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
        "face_keypoints_2d": [],
        "hand_left_keypoints_2d": [458.149, 315.774, 0.0320216, 459.031, 314.891, 0.0582551, 457.266, 321.954, 0.127813, 447.554, 292.819, 0.327428, 430.779, 283.99, 0.179039, 433.428, 298.999, 0.031905, 501.41, 308.711, 0.0367349, 488.167, 307.828, 0.07174, 476.689, 314.008, 0.0632121, 439.608, 291.936, 0.0260603, 502.293, 306.945, 0.0131884, 458.149, 292.819, 0.0295078, 477.572, 315.774, 0.0275818, 438.725, 287.521, 0.015142, 458.149, 291.053, 0.0147157, 453.734, 291.936, 0.0167643, 482.869, 317.539, 0.0241303, 440.491, 289.287, 0.0125309, 445.788, 285.756, 0.0302928, 436.959, 286.639, 0.0408061, 423.716, 284.873, 0.0712924],
        "hand_right_keypoints_2d": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
        "pose_keypoints_3d": [],
        "face_keypoints_3d": [],
        "hand_left_keypoints_3d": [],
        "hand_right_keypoints_3d": []
    }]
}

edit: Пока я пробовал используя Json Утилиту, но ничего не происходит, когда я нажимаю на игру ..


using System;

[Serializable]
public class people
{
    public int[] person_id;
    public float[] pose_keypoints_2d;
    public float[] face_keypoints_2d;
    public float[] hand_left_keypoints_2d;
    public float[] hand_right_keypoints_2d;
    public float[] pose_keypoints_3d;
    public float[] face_keypoints_3d;
    public float[] hand_left_keypoints_3d;
    public float[] hand_right_keypoints_3d;
}

using System;
using System.Collections.Generic;

[Serializable]
public class OpenPoseStructList
{
    public List<people> OpenPoseStruct = new List<people>();

}

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class OpenPoseJSONReader : MonoBehaviour
{
    public OpenPoseStructList jSONtest2List = new OpenPoseStructList();

    // Start is called before the first frame update
    void Start()
    {
        TextAsset asset = Resources.Load("CamA") as TextAsset;
        if (asset != null)
        {
            Debug.Log(asset.text);
            jSONtest2List = JsonUtility.FromJson<OpenPoseStructList>(asset.text);

            foreach (people test in jSONtest2List.OpenPoseStruct)
            {
                Debug.Log(test.person_id.Length);
                Debug.Log(test.pose_keypoints_2d);
                Debug.Log(test.face_keypoints_2d);
            }
        }
        else
        {
            Debug.Log("asset is null");
        }
    }
}

...