https://i.imgur.com/2t2gO0g.png
Ошибка: «JSON должен представлять тип объекта». Но только когда я добавляю "{\" meshDatas \ ":" + jsonResult + "}";это работает (извините за то, что действительно плохо объяснил)
Столкнулся с проблемой (https://i.imgur.com/XDzokfj.png), "JSON должен представлять тип объекта".
Как мне сделать, чтобы сделатьМои Rest Api возвращают список в виде объекта JSON?
Фактический ответ Json: https://i.imgur.com/GUzHKG8.png
Видео следующих тезисов: https://www.youtube.com/watch?v=TrOLTrIX9Yk && https://www.youtube.com/watch?v=00gSBOTI4tg, затем изменилкод для получения MeshData из базы данных
Попытка: string jsonResult = System.Text.Encoding.UTF8.GetString (www.downloadHandler.data);
var newJson = "{\" meshDatas \":" + jsonResult + "}";
MeshDataList meshDataList = JsonUtility.FromJson (newJson);
, которая работала и сузила проблему до форматирования Rest Api, но теперь я не знаю, как идтио том, чтобы заставить Api отправить правильное форматирование ...
Image_For.Context https://i.imgur.com/tWj8Ohf.png
//RestClient.cs (Unity)
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class RestClient : MonoBehaviour
{
private static RestClient _instance;
public static RestClient Instance
{
get
{
if (_instance == null)
{
_instance = FindObjectOfType<RestClient>();
if (_instance == null)
{
GameObject go = new GameObject();
go.name = typeof(RestClient).Name;
_instance = go.AddComponent<RestClient>();
DontDestroyOnLoad(go);
}
}
return _instance;
}
}
public IEnumerator Get(string url, System.Action<MeshDataList> callBack)
{
using (UnityWebRequest www = UnityWebRequest.Get(url))
{
yield return www.SendWebRequest();
if (www.isNetworkError)
{
Debug.Log(www.error);
}
else
{
if (www.isDone)
{
try
{
string jsonResult = System.Text.Encoding.UTF8.GetString(www.downloadHandler.data);
var newJson = "{\"meshDatas\":" + jsonResult + "}";
MeshDataList meshDataList = JsonUtility.FromJson<MeshDataList>(newJson);
callBack(meshDataList);
}
catch(Exception e)
{
Debug.Log(e.Message);
}
}
}
}
}
//Game.cs (Unity)
public class Game : MonoBehaviour
{
public string WEB_URL = "";
// Start is called before the first frame update
void Start()
{
StartCoroutine(RestClient.Instance.Get(WEB_URL, GetMeshDatas));
}
void GetMeshDatas(MeshDataList meshDataList)
{
foreach (MeshData meshData in meshDataList.meshDatas)
{
Debug.Log("MeshData Xsize :" + meshData.xsize);
Debug.Log("MeshData Zsize :" + meshData.zsize);
Debug.Log("MeshData Width :" + meshData.width);
Debug.Log("MeshData Height :" + meshData.height);
Debug.Log("MeshData Scale :" + meshData.scale);
Debug.Log("MeshData OffsetX :" + meshData.offsetX);
Debug.Log("MeshData OffsetY :" + meshData.offsetY);
Debug.Log("MeshData Id :" + meshData.id);
}
}
}
//UMM.API.Dummy.Controllers
[Route("api/[controller]")]
[ApiController]
public class MeshDatasController : Controller
{
private readonly UMMClientDEMContext _context;
public MeshDatasController(UMMClientDEMContext context)
{
_context = context;
}
// GET: api/MeshDatas
[HttpGet]
public async Task<ActionResult<IEnumerable<MeshData>>> GetMeshData()
{
return await _context.MeshData.ToListAsync();
}
// GET: api/MeshDatas/{n}
[HttpGet("{id}")]
public async Task<ActionResult<MeshData>> GetMeshData(int id)
{
var meshData = await _context.MeshData.FindAsync(id);
//MeshData meshData = MeshData.Single(mbox => mbox.Id == Id);
if (meshData == null)
{
return NotFound();
}
return meshData;
}
//UMM.API.Dummy.Models
namespace UMM.API.Dummy.Models
{
[JsonObject, Serializable]
public class MeshData
{
public int? Xsize { get; set; }
public int? Zsize { get; set; }
public int? Width { get; set; }
public int? Height { get; set; }
public int? Scale { get; set; }
public int? OffsetX { get; set; }
public int? OffsetY { get; set; }
public int Id { get; set; }
}
Ожидаемый результат https://i.imgur.com/E3lmFKW.png Получениеправильные отформатированные данные Json с обратной стороны Rest Api, например
{"meshDatas": [{"xsize": 20, "zsize": 20, "ширина": 256, "высота": 256, "масштаб": 20, "OffsetX": 100, "OffsetY": 100, "идентификатор": 1}]}