如何从JSON中获取值

How to get value from JSON?

本文关键字:获取 JSON      更新时间:2023-09-26

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

如果form的结果是这个

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

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

form.latform.lon

简单Fiddler

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

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

$.toJSON(form)将您的对象转换为字符串,我认为您想要传递对象,所以只需将其丢弃即可:

Android.openForm(form);

没有意识到我的队友正在使用插件。。。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

试试这个

openForm: function( json ){
    var lat = json.lat;//or json["lat"]
    var lon = json.lon;//or json["lon"]
}

顺便说一句,变量form已经是一个格式良好的json了,您不必为了使用它而将其转换为json

如果$.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,我们为什么要使用它

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

序列化只是一种标准化格式,它从一个环境的本机数据结构中"字符串化",然后解析为不同环境的本地数据结构。

我假设toJSON是"字符串"函数,openForm是JSON数据传输到的独立环境。

如果这些假设是正确的,则需要将JSON解析到新环境中,然后才能轻松访问其值。