繁体   English   中英

Unity 访问 JSON 对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM