我试图在Unity中创建一个通知列表,这些通知由JSON API传递。我正在使用SimpleJson插件,我已经在另一个场景中完美地使用了它,
下面是JSON:
[
{
"_id": {
"$oid": "5d30eccda6e0712cfd0832c3"
},
"titulo": "Primera Notificacion",
"texto": "Prueba de notificacion"
},
{
"_id": {
"$oid": "5d336c36a6e07114ac728cc2"
},
"titulo": "Segunda notificacion",
"texto": "Prueba de notificacion 2"
}
]
错误如下:
异常:JSON parse:引号似乎被搞乱了。Simplejson.jsonnode.parse(System.String aJSON)(位于Assets/Qrcode/Scripts/Simplejson.cs:735)Simplejson.json.parse(System.String aJSON)(位于Assets/Qrcode/Scripts/Simplejson.cs:1421)DataLoadernot+D__5.MoveNext()(位于Assets/Qrcode/Scripts/DataLoadernot.cs:29)UnityEngine.SetupCoroutine.InvokEmoveNext(
我正在使用以下代码调用JSON:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using SimpleJSON;
public class DataLoader : MonoBehaviour
{
string JsonDataString;
string JsonDataString2;
static public string OriginalJsonSite = "http://(web service name)/API/testnot.php";
public Text TituloNot;
public Text TextoNot;
IEnumerator Start ()
{
WWW readingsite = new WWW (OriginalJsonSite);
Debug.Log(OriginalJsonSite);
yield return readingsite;
if (string.IsNullOrEmpty (readingsite.error)) {
JsonDataString = readingsite.text;
JsonDataString2 = JsonDataString.Substring(3, JsonDataString.Length - 4);
}
JSONNode jsonNode = SimpleJSON.JSON.Parse(JsonDataString2);
JSONArray array = jsonNode.AsArray;
Debug.Log(JsonDataString2);
TituloNot.text = array[0]["titulo"].ToString();
Debug.Log(jsonNode["titulo"]);
TextoNot.text = array[0]["texto"].ToString();
Debug.Log(jsonNode["texto"]);
}
}
台词
Debug.Log(jsonNode["titulo"]);
Debug.Log(jsonNode["texto"]);
你应该把它们移走。
另外,如果返回的JSON确实与您发布的JSON一模一样,您还应该删除这一行
JsonDataString2 = JsonDataString.Substring(3, JsonDataString.Length - 4);
解析将负责查找匹配的括号[]和大括号{},因此这一行将中断它。
编辑:我没有测试它,但在我看来,这段代码应该可以工作:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using SimpleJSON;
public class DataLoader : MonoBehaviour
{
string jsonDataString;
static public string originalJsonSite = "http://(web service name)/API/testnot.php";
public Text tituloNot;
public Text textoNot;
IEnumerator Start()
{
WWW readingsite = new WWW (originalJsonSite);
yield return readingsite;
if (string.IsNullOrEmpty(readingsite.error))
{
jsonDataString = readingsite.text;
}
JSONNode jsonNode = SimpleJSON.JSON.Parse(jsonDataString);
JSONArray array = jsonNode.AsArray;
tituloNot.text = array[0]["titulo"].ToString();
textoNot.text = array[0]["texto"].ToString();
}
}