parse() 处的 JsonReaderException - HololensDeploy
JsonReaderException at parse() - HololensDeploy
我在全息镜头上部署时遇到异常。我不知道为什么或如何解决它。它发生在以下class.
class JsonConverter
{
public Dictionary<GameObject, String> convertJsonToObject(String json) {
Dictionary<GameObject, String> objectList = new Dictionary<GameObject, string>();
//Change JSON String to JSON Object
JObject jObject = JObject.Parse(json);
//Open features array in the object
foreach(JObject pipe in jObject["features"].ToArray())
{
//Parse JSON Object to Creator
PipeLineCreator p = pipe.ToObject<PipeLineCreator>();
objectList.Add(p.CreatePipes(),p.Type);
}
return objectList;
}
}
它要么无法解析我收到的数据,要么我根本没有收到任何数据。对于泡沫,我认为问题出在以下 class.
class JsonReader
{
public String data { get; set; }
public bool loaded { get; set; }
public IEnumerator ReadData(String source) {
using (WWW webClient = new WWW(source))
{
loaded = false;
yield return webClient;
data = webClient.text;
loaded = true;
}
}
}
它尝试从远程 Web 服务接收数据,returnsJson。程序会等到调用完成后再继续。
//reader is an instance of JsonReader
StartCoroutine(reader.ReadData(Globals.Globals.DATAURL));
yield return new WaitUntil(() => reader.loaded);
有人知道我做错了什么以及我该如何解决这个问题吗?
我解决了我自己的问题。
我的问题是我没有从我的 WWW 呼叫中收到任何数据。
显然 WWW class 用于接收 HTML 文件,但没有别的(或至少在全息镜头上)。
相反,我使用了 UnityWebRequest class,它允许您按如下方式从调用中接收字节。
public IEnumerator ReadData(String source) {
using (UnityWebRequest webClient = UnityWebRequest.Get(source))
{
loaded = false;
yield return webClient.SendWebRequest();
byte[] bytes = webClient.downloadHandler.data;
data = Encoding.UTF8.GetString(bytes);
loaded = true;
if (data == null||data.Equals(""))
{
throw new ArgumentNullException("Data", "No Data recieved from service");
}
}
}
要从字节数组中获取 Json 数据,您只需使用 UTF-8 编码器对其进行编码。
我希望这对其他人也有帮助。
我在全息镜头上部署时遇到异常。我不知道为什么或如何解决它。它发生在以下class.
class JsonConverter
{
public Dictionary<GameObject, String> convertJsonToObject(String json) {
Dictionary<GameObject, String> objectList = new Dictionary<GameObject, string>();
//Change JSON String to JSON Object
JObject jObject = JObject.Parse(json);
//Open features array in the object
foreach(JObject pipe in jObject["features"].ToArray())
{
//Parse JSON Object to Creator
PipeLineCreator p = pipe.ToObject<PipeLineCreator>();
objectList.Add(p.CreatePipes(),p.Type);
}
return objectList;
}
}
它要么无法解析我收到的数据,要么我根本没有收到任何数据。对于泡沫,我认为问题出在以下 class.
class JsonReader
{
public String data { get; set; }
public bool loaded { get; set; }
public IEnumerator ReadData(String source) {
using (WWW webClient = new WWW(source))
{
loaded = false;
yield return webClient;
data = webClient.text;
loaded = true;
}
}
}
它尝试从远程 Web 服务接收数据,returnsJson。程序会等到调用完成后再继续。
//reader is an instance of JsonReader
StartCoroutine(reader.ReadData(Globals.Globals.DATAURL));
yield return new WaitUntil(() => reader.loaded);
有人知道我做错了什么以及我该如何解决这个问题吗?
我解决了我自己的问题。
我的问题是我没有从我的 WWW 呼叫中收到任何数据。 显然 WWW class 用于接收 HTML 文件,但没有别的(或至少在全息镜头上)。
相反,我使用了 UnityWebRequest class,它允许您按如下方式从调用中接收字节。
public IEnumerator ReadData(String source) {
using (UnityWebRequest webClient = UnityWebRequest.Get(source))
{
loaded = false;
yield return webClient.SendWebRequest();
byte[] bytes = webClient.downloadHandler.data;
data = Encoding.UTF8.GetString(bytes);
loaded = true;
if (data == null||data.Equals(""))
{
throw new ArgumentNullException("Data", "No Data recieved from service");
}
}
}
要从字节数组中获取 Json 数据,您只需使用 UTF-8 编码器对其进行编码。
我希望这对其他人也有帮助。