Unity与AS|对象与Json互转,字符串转枚举

本文介绍Unity3D与Android Studio如何通过Socket通信并处理Json数据,涉及枚举类型转换方法,包括Unity3D中使用JsonUtility及C#语法进行对象与Json互转,Android Studio中使用JSONObject实现相同功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      Unity 3D与Android Studio通过Socket传输消息时,需要对Json数据进行处理。当有枚举数据时,对象转Json需要枚举转字符串,解析Json需要字符串转枚举。

一、Unity3D

     public enum NetApiID
     { 
          NetApiID_Invaild = 0, 
          NetApiID_Login, 
          NetApiID_Pos,
          NetApiID_Chair, 
     }
     public class NetLogin
     {
          public NetApiID netApiID;
          public string name;
          public string id;
          public string phone;
     }

二、Android Studio

     public enum NetApiID {
          NetApiID_Invaild, NetApiID_Login, NetApiID_Pos, NetApiID_Chair,
     }

     public class NetLogin {
          public NetApiID netApiID;
          public String name;
          public String id;
          public String phone;
     }


  • Unity3D对象转Json:

     public void ObjToJson()
     {
          NetLogin msg = new NetLogin ();
          msg.netApiID=NetApiID.NetApiID_Login;
          msg.name="fcj";
          msg.id="142430199606222026";
          msg.phone = "12312312312";
          string str = JsonUtility.ToJson (msg);
     }
  
     [str结果]:{"netApiID":1,"name":"fcj","id":"142430199606222026","phone":"12312312312"}

  • Android Studio解析Json文件:

     private void JsonToObj(String JsonData) {
          NetLogin netLogin = new NetLogin();
          try {
               JSONObject jsonObject = new JSONObject(JsonData);
               netLogin.MsgID=NetApiID.valueOf(jsonObject.getString("MsgID"));//Java字符串转枚举
               netLogin.name = jsonObject.getString("name");
               netLogin.id = jsonObject.getString("id");
               netLogin.phone = jsonObject.getString("phone");
          } catch (Exception e) {
               Log.d(TAG, e.toString());
          }
     }

  • Android Studio对象转Json:

     NetLogin netLogin=new NetLogin();
     netLogin.netApiID=NetApiID.NetApiID_Login;
     netLogin.name="fcj";
     netLogin.id="142430199606222026";
     netLogin.phone = "12312312312";
     JSONObject jsonObject=new JSONObject();
     try {
          jsonObject.put("netApiID",netLogin.netApiID);
          jsonObject.put("name", netLogin.name);
          jsonObject.put("id", netLogin.id);
          jsonObject.put("phone", netLogin.phone);
          String str=jsonObject.toString();
     }catch (JSONException e)
     {
          Log.d(TAG,e.toString());
     }

  • Unity 3D解析Json文件:

     string msg="{'netApiID':1,'name':'fcj','id':'142430199606222026','phone':'12312312312'}";
     try
     {
        JsonNode node = JSON.Parse(msg);
        NetLogin netLogin = new NetLogin();
        netLogin.netApiID=(NetApiID)Enum.Parse(typeof(NetApiID),node["netApiID"]);//C#字符串转枚举
        netLogin.name = node["name"];
        netLogin.phone = node["phone"];
        netLogin.id = node["id"];
        }
     catch (Exception e)
     {
        Debug.Log(e.ToString());
     }
       


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烫青菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值