嗯..我有这个json值:
var form = {
lat: event.row['lat'].value,
lon: event.row['lon'].value,
}
Android.openForm( $.toJSON(form) );
如何从lat和long获取值?
openForm: function( json ){
alert(json[lat]);
//$('#lat').val(json.lat);
}
答案 0 :(得分:2)
为什么不让openForm直接接收对象而不是json序列化?
openForm(form){
var json = $.toJSON(form);
alert(form.lat);
}
答案 1 :(得分:2)
如果form
的结果是这个
var form = {
lat: "somevalue",
lon: "somevalue"
};
您可以通过点属性访问变量form
中的数据。
form.lat
和form.lon
答案 2 :(得分:1)
$.toJSON(form)
将您的对象转换为字符串,我想您想要传递该对象,所以只需删除它:
Android.openForm(form);
答案 3 :(得分:0)
没意识到我的队友正在使用插件...... http://code.google.com/p/jquery-json/
我应该先问他.. @ _ @ 对不起,
var thing = {plugin: 'jquery-json', version: 2.3};
var encoded = $.toJSON( thing );
// '{"plugin":"jquery-json","version":2.3}'
var name = $.evalJSON( encoded ).plugin;
// "jquery-json"
var version = $.evalJSON(encoded).version;
// 2.3
答案 4 :(得分:-1)
试试这个
openForm: function( json ){
var lat = json.lat;//or json["lat"]
var lon = json.lon;//or json["lon"]
}
顺便说一下,变量form
已经是一个格式正确的json,你不必将它转换为json才能使用它。
答案 5 :(得分:-1)
如果$.toJSON
是JSON.stringify
之类的方法,那么您已将数据序列化为JSON文本,因此它的值不再通过属性提供。
您需要先解析它。
openForm: function( json ){
// UPDATED to use the JSON plugin you've loaded
var parsed = $.evalJSON( json );
alert( parsed[lat] );
}
我认为原始form
变量无法从您尝试检索值的位置访问,否则您可能不会首先将其序列化。
如果原始form
数据位于同一个执行环境中,并且可以直接从您的函数中访问,那么您应该这样做而不是序列化。
对于那些不了解JSON意图的人,它是一种基于文本的序列化格式,用于在数据无法自然共享的环境之间传输数据。
序列化只是一种标准化格式,可以从一个环境的本机数据结构中“进行字符串化”,然后解析为不同环境的本机数据结构。
我认为toJSON
是“stringify”函数,而openForm
是传输JSON数据的独立环境。
如果这些假设是正确的,那么在可以轻松访问其值之前,需要将JSON解析到新环境中。