[英]Unity accessing JSON Object
我正在使用 Unity 和 Gamesparks。 我收到了 Gamesparks 对象的返回值,但我无法使用 C# 访问其中的数据。
private void OnScriptMessage(ScriptMessage message)
{
switch (message.ExtCode)
{
case "EndTurnMessage":
{
var data = message.Data;
string playerID = data.GetString("playerID");
print(message.JSONString);
break;
}
print(message.JSONString);
显示
{"@class":".ScriptMessage","data":{"player":{"status":"win","choice":"scissors","newScore":1},"opponent":{"status":"lost","choice":"paper","newScore":0}},"extCode":"roundWonMessage","messageId":"5c74b1a8bcb1b604f0275ed5","notification":true,"playerId":"5c5b5823642c55481643846d","summary":"ScriptMessage"}
UnityEngine.MonoBehaviour:print(Object)
我希望获得newScore
等,但我对 C# JSON 感到困惑
您的数据如下:
"@class":".ScriptMessage","data":{"player":{"status":"win","choice":"scissors","newScore":1},"opponent":{"status":"lost","choice":"paper","newScore":0}},"extCode":"roundWonMessage","messageId":"5c74b1a8bcb1b604f0275ed5","notification":true,"playerId":"5c5b5823642c55481643846d","summary":"ScriptMessage"}
您需要使用 -> JsonUtility.FromJsonOverwrite(json, @class); 反序列化它。
但是要获得那个值,您可能只需要一种解析 JSON 的好方法。 基本 JSON 根节点下是 data、playerId、extCode、messageId、notification、summary。 您需要将字段“数据”视为 JSONObject,然后将“玩家”和“对手”视为 JSON 对象。 解析其中的值以获得 newScore。
所以你的代码看起来像这样(这将用作一般准则):
var data = message.Data;
string playerID = data.GetString("playerID");
var _data = data.GetObject("data"); //whatever to get data as JSON or Object
var _player = _data.GetObject("player"); //whatever to get data as JSON or Object
var _opponent= _data.GetObject("opponent"); //whatever to get data as JSON or Object
int _mscorePlayer = _player.GetInteger("newScore"); //Whatever the getter is for JSON Number it could be GetNumber or something comparable.
int _mscoreOpponent= _opponent.GetInteger("newScore"); //Whatever the getter is for JSON Number it could be GetNumber or something comparable.
print(message.JSONString);
print("your playerId:\t" + playerId);
print("your newScore:\t" + _mscorePlayer);
print("opponent newScore:\t" + _mscoreOpponent);
break;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.