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

      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());
     }
       


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

烫青菜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值