[Unity][JSON]Unexpected node type.(JSONObject与JSONArray数据读取出错)

在Unity中,从字符串转换JSON数据时遇到'Unexpected node type.'错误。当字符串包含单个JSON对象时,使用JSONArray会导致错误,而应使用JSONObject。相反,如果数据是JSON数组,使用JSONObject会报错。此问题常见于Java与C#间通过JSON交换数据时。解决方案在于正确识别并使用适合的数据类型来解析JSON字符串。

 

 

从string字符串变量 转换为 JSON 数据的时候出现错误(Unexpected node type.)。

 

JSON数据为

{"code":1}

 

...

    [System.Serializable]
    public class LoginJson
    {
        public int code = 0;
        public int ccc = 0;
    }
...

 

 获取单个JSON数据的变量

当JSON数据从字符串转换成JSON数据的时候,只有单个JSON数据,使用这个,是不会出现错误(Unexpected node type.)

...
            LoginJson wrapper = JsonUtility.FromJson<LoginJson>(msg);//单个变量
            Debug.Log(wrapper.code);//JSONObject读取数据方法
...

 

获取数组,多个JSON数据的变量

专门读取多个JSON数据的代码,用于 单个JSON数据的变量读取的时候,会出现错误。

...
            LoginJson[] jsons = JsonHelper.FromJson<LoginJson>(msg);
            Debug.Log("   :"+jsons);
            for (int i = 0; i < jsons.Length; i++)
            {
                Debug.Log("========    data[" + i + "]." + jsons[i]);
            }//JSONArray读取数据
...

 

反之如果JSON数据是 多个数组组成的数据,用单个JSON数据读取的代码,也会报错。

 

通过参考资料1,得知,一个字符串变量 里面,如果只有一个JSON数据,那么就是JSONObject。使用JSONArray读取数据的方法就会出错。

反之,也一样。

 

通常这种出现错误的方式 是JAVA和C#通过JSON格式的数据进行交互,产生的错误。

 

参考资料:

1.

 

JSONObject与JSONArray的使用

2.

3.

 

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值