我有一个名为
var type = [];
Run Code Online (Sandbox Code Playgroud)
我在哪里
type.push({'type' : 1});
Run Code Online (Sandbox Code Playgroud)
最后我得到以下对象:
[{"type":"1"},{"type":"2"},{"type":"3"},{"type":"4"}]
Run Code Online (Sandbox Code Playgroud)
通过执行 JSON.stringify();
但是我怎样才能得到PHP中的类型呢?
我正在测试Windows Phone 7上的移动网站,而JSON.stringify功能无效.有谁知道为什么会发生这种情况或者我能做些什么来解决这个问题?我正在对数组进行字符串化以将其存储在cookie中.这是我的代码:
vString = JSON.stringify(vehicleArray);
alert ('this alert will never execute');
$j.cookie('vehicleCookie', vString, { expires: 7, path: '/' }); //Store all the vehicles again to the cookie
Run Code Online (Sandbox Code Playgroud)
超出vString行的任何代码都不再执行.
如果记录,vehicleArray看起来像这样:
["145", "273", "241", "553", "490", "380"]
Run Code Online (Sandbox Code Playgroud)
我无法提供有关什么工作或不工作的大量信息,因为Windows phone没有我所知道的任何类型的调试器,并且代码在ie7中工作正常.
我有一堆对象需要将它们的状态以 json 表示形式发送到服务器。目前它的工作原理如下:
MyClass.prototype.GetJSON(){
return '{"title":"' + m_Title + '","description":"' + m_Desc + '"}';
};
Run Code Online (Sandbox Code Playgroud)
和我一起工作的人建议我做这样的事情:
MyClass.prototype.GetJSON(){
return JSON.stringify( {title:m_Title, description:m_Desc} );
};
Run Code Online (Sandbox Code Playgroud)
这样做有什么优点/缺点?它比我已经在做的事情效率更高/更低吗?
JavaScript代码:
var data = {"hiSO": "my very complex - nested objects/arrays - data object"};
var j = jQuery.noConflict();
j.ajax({
type: "POST",
url: "postTestingResult.php",
contentType: "application/json; charset=utf-8",
data: {"data": JSON.stringify(data)},
dataType: "json",
success: ajaxSuccess,
error: ajaxError
});
Run Code Online (Sandbox Code Playgroud)
PHP代码:
header('Content-Type: application/json');
if(!empty($_POST['data'])) {
$data = json_decode($_POST['data']);
//do things with data
echo json_encode(array("success" => "thanks for the info!"));
} else {
echo json_encode(array("error" => "'data' is not set or is NULL"));
}
Run Code Online (Sandbox Code Playgroud)
无论我如何构造数据,$ _POST ['data']似乎总是空的(具体来说,未定义).如果你想要我正在使用的数据对象的完整副本,请查看这个JSFiddle.感谢您的帮助,谢谢!
@解决了
正如James M. Lay所解释的那样,我应该将我的内容类型application/x-www-form-urlencoded改为application/json
它隐含在一个错误中,因为似乎只有UrlEnconded类型在服务器端生成POST数组(至少在PHP中).所以我不得不改变我在服务器脚本中接收/处理请求的方式
$json = file_get_contents('php://input'); //yes. php://input
if($json) $params = json_decode($json,true);
else $params = $_POST;
Run Code Online (Sandbox Code Playgroud)
我还必须在Javascript代码中进行一些更改以检查内容类型并生成不同的字符串.如果它是JSON我只是使用JSON.stringify
//string to use in the 'send' method
this.getParametersString = function(){
if(this.contentType == 'application/json'){
return JSON.stringify(this.parameters);
}else{}
}
Run Code Online (Sandbox Code Playgroud)
我有一个问题
我正在构建一个函数,它接收参数以写入参数列表并通过POST发送它
问题是我们不能发送特殊字符,例如 +
所以我尝试使用该函数encodeURIComponent将它们编码为URI友好字符串.
还有另外一个问题:如果收到的参数是一个对象,我循环遍历属性,检查它是否是另一个对象或字符串,如果它是一个对象,再次循环,否则编码它.
但它返回一个编码字符串的对象.我必须使对象成为发送它的字符串,为此我使用JSON.stringify.它解码编码的字符串.所以再次%2B成为+,它不会通过POST发送到服务器.
另一方面,如果我stringify先使用encodeURIComponent它,它会生成不应该编码的"和{}等符号,而且字符串不是写得很好的JSON
那你怎么样?这是不使用jQuery的方式吗?我是否必须构建自己的stringify函数?!
我有一个 ruby 哈希,如下所示:
{ id: 123, name: "test" }
Run Code Online (Sandbox Code Playgroud)
我想将其转换为:
{ "id" => 123, "name" => "test" }
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个自定义函数,用于将JSON对象转换为单行字符串.例如:
var obj = {
"name": "John Doe",
"age": 29,
"location": "Denver Colorado",
};
Run Code Online (Sandbox Code Playgroud)
我想把它输出: "{ \"name\": \"John Doe\", \"age\": 29, \"location\": \"Denver Colorado,\"}"
我的下面的函数不起作用,这让我想知道如何删除输出中的新行(隐藏):
function objToCompactString(obj) {
var result = "\"{";
Object.keys(obj).forEach(key => {
result += `"${key}":"${obj[key]}",`;
});
result += "}\"";
return result;
}
Run Code Online (Sandbox Code Playgroud) 我有以下对象,我正在尝试将其转换为json对象,如下所示
var feeTransactionsArray=[];
$(".editor #newPayTable .mainTr").each(function(){
var feeTransactions={};
var studentDetails={};
var feeCategory={};
studentDetails['studentAdmissionId']=id;
feeCategory['feeCatId']=$(this).find('.feeCatId').val();
feeTransactions['studentDetails']=studentDetails;
feeTransactions['feeCategory']=feeCategory;
feeTransactions['paidOn']=paidDate;
feeTransactions['transReceiptNo']=receciptNumber;
feeTransactions['amountPaid']=$(this).find('.amount').val();
feeTransactions['paymentMode']=mode
feeTransactions['amountPaid']=refrenceNumber;
feeTransactions['isConcessionGiven']='no';
feeTransactionsArray.push(feeTransactionsArray);
});
var myJSON = JSON.stringify(feeTransactionsArray);
Run Code Online (Sandbox Code Playgroud)
这给出了以下错误
actions.js:1180 Uncaught TypeError: Converting circular structure to JSON
at JSON.stringify (<anonymous>)
Run Code Online (Sandbox Code Playgroud)
在我的情况下如何解决这个问题。请帮我。谢谢!
我正在寻找一种模仿php的json_encode来自节点js的行为的方法.这是一个示例,显示了php在一个获取json_encoded的对象中的url所做的事情:
<?
$foo['url'] = "http://example.com/note/that/the/slashes/get/backslashed";
echo json_encode($foo);
?>
Run Code Online (Sandbox Code Playgroud)
生成以下输出:
{"url":"http:\/\/example.com\/note\/that\/the\/slashes\/get\/backslashed"}
Run Code Online (Sandbox Code Playgroud)
在这里使用node.js和JSON.stringify函数:
var foo = new Object();
foo.url = "http://example.com/note/that/the/slashes/do/not/get/backslashed"
console.log(JSON.stringify(foo));
Run Code Online (Sandbox Code Playgroud)
我观察这个输出:
{"url":"http://example.com/note/that/the/slashes/do/not/get/backslashed"}
Run Code Online (Sandbox Code Playgroud)
你知道一种干净的方法让JSON.stringify的行为方式与PHP的行为相同吗?
额外的信息:我意识到正确的json编码可能不需要这些斜杠,但是我将json编码的对象发送到我无法控制的远程服务器,并且在没有反斜杠的情况下不喜欢它们.
更多额外信息:我尝试放入自己的反斜杠,然后调用JSON.stringify,但JSON.stringify尽职尽责地正确地逃避反斜杠,所以我最终得到了\\ /而不是\ /这就是我想要的.
我想在C++中执行以下操作:
static const char* data[] = { #include "mydata.hh" };
Run Code Online (Sandbox Code Playgroud)
其中mydata.hh的内容应该被指定为数据的char数组.我已经尝试了#include的各种变体和(一级和两级)字符串化#x.到目前为止没有工作.这实际上是可能的还是我错过了什么?
谢谢你.