如何从JSON获得价值?

时间:2011-12-05 19:16:02

标签: javascript jquery json

嗯..我有这个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);
}

6 个答案:

答案 0 :(得分:2)

为什么不让openForm直接接收对象而不是json序列化?

openForm(form){
    var json = $.toJSON(form);
    alert(form.lat);
}

答案 1 :(得分:2)

如果form的结果是这个

var form = {
lat: "somevalue",
lon: "somevalue"
};

您可以通过点属性访问变量form中的数据。

form.latform.lon

Simple Fiddler

答案 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)

如果$.toJSONJSON.stringify之类的方法,那么您已将数据序列化为JSON文本,因此它的值不再通过属性提供。

您需要先解析它。

openForm: function( json ){

     // UPDATED to use the JSON plugin you've loaded
    var parsed = $.evalJSON( json ); 

    alert( parsed[lat] );
}

我认为原始form变量无法从您尝试检索值的位置访问,否则您可能不会首先将其序列化。

如果原始form数据位于同一个执行环境中,并且可以直接从您的函数中访问,那么您应该这样做而不是序列化。


什么是JSON,我们为什么要使用它?

对于那些不了解JSON意图的人,它是一种基于文本的序列化格式,用于在数据无法自然共享的环境之间传输数据。

序列化只是一种标准化格式,可以从一个环境的本机数据结构中“进行字符串化”,然后解析为不同环境的本机数据结构。

我认为toJSON是“stringify”函数,而openForm是传输JSON数据的独立环境。

如果这些假设是正确的,那么在可以轻松访问其值之前,需要将JSON解析到新环境中。