android与网页js交互 json传参格式问题

如果不进行格式转换,安卓客户端获取到的参数内容是undefined


网上存在多种方法:

1)jQuery插件支持的转换方式

$.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象


2)浏览器支持的转换方式(Firefox,chrome,opera,safari,ie9,ie8)等浏览器:

JSON.parse(jsonstr); //可以将json字符串转换成json对象
JSON.stringify(jsonobj); //可以将json对象转换成json对符串 


eval的方式我没测试成功,希望有测试成功的能提供例子分享下。这里我测试使用的是第二种方法,value格式内容如下所示

android与网页js交互 json传参格式问题

JSON.stringify(value)转换成字符串之后,会发现安卓解析JSON格式会报错,转换后格式如下所示

android与网页js交互 json传参格式问题

转换后会默认加上双引号,导致安卓解析JSON的时候报格式错误,那我们可以采用以下方式解决这个问题

1)前后双引号问题:

传递参数的时候,一般会使用“'+ value+'”包含变量,建议直接写成'+ value +'

以下测试是不可行的方式:

JSON.stringify(value).substr(1, value.length - 1)  或

JSON.stringify(value).substr(1, JSON.stringify(value).length - 1)


2)用replace的方式替换JSON中包含JSON对象的双引号问题

JSON.stringify(value).replace('"{', '{').replace('}"', '}')