试图解析从Python服务器返回的Json对象时遇到问题。 我得到的错误是 “ArgumentException:JSON必须表示对象类型。”
令人费解的是,如果我获取服务器返回的确切字符串,并在将其传递给解析方法Player.CreateFromJSON之前对其进行硬编码,它就会工作
以下是Python服务器中的3行相关代码
x = '{"playerId":8484239823,"playerLoc":"Powai","playerNick":"Random Nick"}'
y = json.dumps(x)
socket.send_string(y)
这是返回的JSON字符串
"{\"playerId\":8484239823,\"playerLoc\":\"Powai\",\"playerNick\":\"Random Nick\"}"
这是我的播放器对象
[System.Serializable]
public class Player
{
public string playerId;
public string playerLoc;
public string playerNick;
public static Player CreateFromJSON(string jsonString)
{
return JsonUtility.FromJson<Player>(jsonString);
}
}
我使用Unity的原生JsonUtility FromJson方法,从上面可以看出,我只需调用
Player playerInfo = Player.CreateFromJSON(jsonStringFromServer);
填充播放器对象的步骤
他们花了无数个小时在谷歌上搜索,试图找到类似的问题。欢迎任何反馈或故障排除步骤
问题出在Python代码中;也就是说,
x
已经是一个JSON字符串;您不需要调用json.dumps(x)
,您可以改为使用socket.send_string(x)
直接发送它事实上,
y = json.dumps(x)
返回一个JSON编码的JSON字符串:无法解码为
Player
对象-因为它是string
!删除Python代码中的那一行,直接socket.send_string(x)
相关问题 更多 >
编程相关推荐