请告诉我,JSON的用途是什么(在Javascript和PHP中)。 当我们需要JSON方法时。
我从以下链接中读到,但是,我没有得到任何关于任何项目的JSON实现的信息。
答案 0 :(得分:21)
JSON是一种轻量级数据交换格式(在节食时将其视为XML)。基本上任何可以使用XML来序列化数据的地方都可以使用JSON。
答案 1 :(得分:8)
尽管名称如此,但JSON格式的主要用途之一是在AJAX网页开发中(尽管肯定不是唯一的)。由于其轻量级语法,它通常比传统XML更受欢迎。
答案 2 :(得分:4)
JSON是用于传输数据的数据格式。它主要用于Javascript AJAX调用。
JSON的结构只是括号中的名称:值对。由于它的紧凑性和简单性,它是一个更好的结构,用于传输相对较小的数据集和可以分组为名称:值对的东西。
例如:
prototype.js Ajax调用转换和接收JSON数据:
my_prototype_class = Class.create();
my_prototype_class.prototype = {
initialize: function() {
this.myarray = new Array();
//do initialization
},
my_function: function(direction){
new Ajax.Request('/my/url.php',
{
method: 'post',
parameters: { name: value,
myarray_data: this.myarray.toJSON() },
onSuccess: function(transport) {
var response = transport.responseText.evalJSON();
//handle response
},
onFailure: function(){
//handle failure
}
});
}
}
Event.observe(window, "load", function(){new my_prototype_class();}, false);
使用PHP,您可以使用以下内容处理请求:
function my_php_handler()
{
#parse POST data
$name = $_POST["name"];
$myarray_data = $_POST["myarray_data"];
#transform the data in some way
#return encoded string
echo json_encode($results);
}
类似的东西:
[{"myarray": [], "name": value}]
将在http请求/响应中传递。此格式中的数据称为JSON。
答案 3 :(得分:3)
JSON只是一种数据格式。如果您需要存储或传输的数据不比JSON标准支持其值的嵌套系列的名称 - 值对更复杂,那么JSON可能是您项目的正确数据格式。
如果您的项目有数据存储/传输需求;)
答案 4 :(得分:3)
JSON是一种在Javascript和PHP之间来回传递数据的绝佳格式。我最常用的是状态信息。
这是一些用于对小型PHP脚本执行Ajax查询的Javascript。
new Ajax.Request('dostuff.php', {
method: 'get',
parameters: {'param1': 'this is param 1'},
onSuccess: function(response, jsonHeader){
if(jsonHeader['status'] == 'Success'){
//Everything is OK, do stuff
}else{
alert(jsonHeader['status']);
}
},
onFailure: function(){
alert('Fail!');
}
});
然后,在PHP方面,您可以这样:
$jsonHeader = array();
if($_REQUEST['param1'])
{
echo '<p>You passed ' . $_REQUEST['param1'] . '</p>';
$jsonHeader['status'] = 'Success';
}else
{
$jsonHeader['status'] = 'Failed because the request was invalid';
}
if(is_array($jsonHeader) and sizeof($jsonHeader) > 0)
{
header('X-JSON: (' . json_encode($jsonHeader) . ')');
}
纯粹的是Prototype 自动解码 PHP正在创建的X-JSON标头。
最终结果是Javascript中onSuccess方法的jsonHeader参数自动转换为与PHP中的$ jsonHeader数组相同的数组
答案 5 :(得分:2)
JSON是相对轻量级的数据交换格式(至少与XML或HTML相比),在Web客户端和Web服务器/服务之间交换少量数据时最有用。
然而,由于每行交换的开销,它不是交换大型数据列表的最佳选择(尽管比XML好得多)。
答案 6 :(得分:2)
如果您需要使用JavaScript代码操作检索到的数据(即通过浏览器中的Ajax调用),我建议使用JSON。在这种情况下,JSON非常舒适,因为您可以直接将其加载到JavaScript中并使用它(因此Java Script Object Notation =&gt; JSON)。这称为JavaScript对象中JSON字符串的反序列化。它可以通过使用eval()完成,但是 - 我读过 - 会带来一些安全问题,因此应该使用一些JSON(de)序列化器。
正如您提到的page所述,您有一些像
这样的JSON字符串{"bindings": [
{"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
{"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
{"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
]
}
通过网络发送,由客户端上的一些Ajax调用启动,然后调用回调(例如在.Net中)
function onSuccess(result){
var myObj = Sys.Serialization.JavaScriptSerializer.deserialize(result, false);
myObj.bindings[0].ircEvent...
}
优点是使用JavaScript时简单(de)序列化,主要是使用Ajax进行Web开发。否则我不会真正使用JSON,而是依赖于XML,因为对于桌面应用程序,有非常强大的解析库。
答案 7 :(得分:2)
所有其他答案都很棒,但也许是对您的特定情况(JavaScript + PHP)最简单的解释: JSON是将JavaScript对象转换为PHP关联数组或对象的最简单方法(并且亦然)强>
查看json_encode()和json_decode()以了解PHP方面的内容。在JavaScript方面,一个简单的eval()是从JSON字符串中获取对象的最简单(但最不安全!)的方法,但您选择的库肯定会有为您处理这个问题的函数,如果如果您要定位较新的浏览器,则可以使用ECMAScript 5 JSON object。
答案 8 :(得分:1)
JSON主要用作AJAX Web应用程序中XML的轻量级和人类可读替代方案。