Javascript 如何从JSON中获取价值?
嗯。。我有以下json值:Javascript 如何从JSON中获取价值?,javascript,jquery,json,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); } 为什么不让openForm直接接收对象而不是jso
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);
}
为什么不让openForm直接接收对象而不是json序列化
openForm(form){
var json = $.toJSON(form);
alert(form.lat);
}
试试这个
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] );
}
我假设原始的表单
变量无法从您试图检索值的位置访问,否则您可能不会首先序列化它
如果原始的表单
数据处于相同的执行环境中,并且可以直接从函数中访问,则应该这样做,而不是序列化
什么是JSON,我们为什么要使用它? 对于那些不了解JSON的含义的人来说,它是一种基于文本的序列化格式,用于在无法自然共享数据的环境之间传输数据 序列化只是一种标准化格式,它从一个环境的本机数据结构中“字符串化”,然后解析为另一个环境的本机数据结构 我假设
toJSON
是“stringify”函数,而openForm
是JSON数据传输到的单独环境
如果这些假设是正确的,则需要将JSON解析到新环境中,然后才能轻松访问其值。如果
表单
的结果是这样的
var form = {
lat: "somevalue",
lon: "somevalue"
};
您可以通过点属性访问变量表单
中的数据
form.lat
和form.lon
$。toJSON(form)
将对象转换为字符串,我认为您希望传递对象,所以只需将其丢弃:
Android.openForm(form)代码>没有意识到我的队友正在使用插件。。。
我应该先问他…@@@
对不起,奈
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
您只需要在lat
周围加引号,此时它被解析为一个变量,应该是一个字符串:alert(json['lat'])代码>警报(json);显示json中的所有值。但是我不知道如何访问像lat和lonI这样的单个值,假设form
变量在openForm
函数中不可用,并且您需要JSON序列化来传输数据,因为JSON就是用于此的。是这样吗?但我将表单传递给函数并将其命名为json..:|<代码>$.toJON
谁是Jon?;)或者这是新的Java对象表示法?;)如何从openForm
函数知道form
是否可用?如果(form==undefined)return??您的答案可能提供了一个有效的替代方案(假设调用函数的范围内有form
),但严重误用了术语JSON。关于如何或是什么形成变量几乎没有上下文。但是给出了这个例子,OP似乎正在构建一个js变量并将其传递给一个方法。@ScruffyTheJanitor:是的。这是一个JavaScript对象文本,它是经过评估的JavaScript环境的一部分。JSON是一种可能被转换成JavaScript(或其他语言)的文本,但在此之前,它是不同的。有一些JSON数据不会作为有效的JavaScript代码进行计算的示例。两者之间的联系是,JSON表示法基于JS中的对象文字表示法。到目前为止,谁对第一个正确答案投了反对票?jQuery不够?谢谢你的更新。我希望我能不止一次地投你赞成票。@阿尔瓦罗·G·维卡里奥:我希望你也能,因为我刚刚又收到了一张反对票。啊!啊,我看到一些14岁的孩子在为我的正确答案投票。@RightSaidFred-多么奇怪-最好的答案得分最低。我会在6小时内+1这个,当你不再被封顶的时候。顺便说一句,你知道这个插件的特点是什么吗?$.toJSON和$.evalJSON如何比本机JSON.stringify和jQuery的本机$.parseJSON更好?如果JSON
包含一个JSON字符串(顾名思义),您就不能这样做:您需要先解析它。而且form
不是格式良好的JSON;它甚至不是一个字符串。看看OP的问题,它看起来像一个格式良好的json。这是因为您可能会混淆。json本身就是一个JavaScript
对象。关键是我们不必解析这个对象来访问它的属性。shankarsangli:JSON是文本,如果您愿意,它可以解析为JavaScript对象。在此之前,它(假设是JavaScript环境)是一个字符串。我认为这就是发生的情况,但您不应该每次访问属性时都使用$.evalJSON
。您应该处理它一次,并存储结果。举个例子。我将更新它以使用插件中的方法@황현정 - 您可以更新原始问题并在那里添加信息。这是一个很好的信息,但并不适合作为答案。