Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何正确地将json对象发送到php后端_C# - Fatal编程技术网

C# 如何正确地将json对象发送到php后端

C# 如何正确地将json对象发送到php后端,c#,C#,当你用这种东西的时候 " Dictionary form=新字典 { {{u metajson,JsonConvert.SerializeObject(metajson)} }; HttpResponseMessage response=等待httpClient.PostAsync(url,新表单UrlEncodedContent(表单)); 然而,在php方面,使用$\u Request我得到了字符串,所有的引号都变成了";,因此json看起来像 {";name";:

当你用这种东西的时候

"

Dictionary form=新字典
{
{{u metajson,JsonConvert.SerializeObject(metajson)}
};
HttpResponseMessage response=等待httpClient.PostAsync(url,新表单UrlEncodedContent(表单));
然而,在php方面,使用
$\u Request
我得到了字符串,所有的引号都变成了
";
,因此json看起来像

{";name";:";myname";}

有没有更好的方法将json发送到php后端

在PHP方面,我只是简单地分配json,它现在已经丢失了引号,并且带有奇怪的标记

$json=$\u请求[“测试”];

我发送的json在内存中,它不会保存到任何地方的文件中。它非常小,如上图所示,是我正在编写的应用程序所需要的。

使用
php://input

php://input
是一个只读流,允许您从请求正文中读取原始数据

例如:

$json_string = file_get_contents('php://input');

//Converting It to PHP object:

$data = json_decode($json_string );

使用
php://input

php://input
是一个只读流,允许您从请求正文中读取原始数据

例如:

$json_string = file_get_contents('php://input');

//Converting It to PHP object:

$data = json_decode($json_string );

我只是在处理同一个问题,这是我的解决方案,它对我有效

$data = $_POST['json'] ;
$json = json_decode($data, true);
echo json_encode($json);

之后,您可以使用$json变量,并对其执行任何操作

我刚才处理的是同一个问题,下面是我的解决方案,它适用于我

$data = $_POST['json'] ;
$json = json_decode($data, true);
echo json_encode($json);

之后,您可以使用$json变量,并对其执行任何操作

我最终改变了工作非常好的方法

我只是对json进行base64编码,以避免http将特殊字符更改为奇数字符串格式,如
更改为
"什么不可以

C#side-在字典形式中使用此字符串

string encodedJson=Convert.ToBase64String(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(metaJson));
PHP端

$encoded_input=$_请求[“metajson”];
$base64_decoded_input=base64_decode($encoded_input,true);
if(!$base64\u解码\u输入)
{
//出错
}
$meta_json=json_编码(json_解码($base64_解码_输入));

我最终改变了行之有效的方法

我只是简单地对json进行base64编码,以避免http将特殊字符更改为奇数字符串格式,如
更改为
";
等等

C#side-在字典形式中使用此字符串

string encodedJson=Convert.ToBase64String(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(metaJson));
PHP端

$encoded_input=$_请求[“metajson”];
$base64_decoded_input=base64_decode($encoded_input,true);
if(!$base64\u解码\u输入)
{
//出错
}
$meta_json=json_编码(json_解码($base64_解码_输入));

您的问题中PHP部分在哪里?@biesior我很好奇是否有一种特殊的方式通过PHP接收json,而不是文件。我查看了一下,但似乎将json作为参数发送会导致引号变成特殊的字符签名。您的问题中PHP部分在哪里?@biesior我很好奇是否有一种特殊的方式通过php接收不是文件的json的方法。我查看了一下,但似乎将json作为参数发送会导致引号转换为特殊字符签名。我还有其他参数也随请求一起发送,因此这不起作用。这与使用
json\u编码(get\u object\u vars($\u request))相同
使用上面的代码,我得到了
%7B%22name%22%3A%22myname%22%7D
这是一个完全不同的问题。我还有其他参数也随请求一起发送,所以这不起作用。这与使用
json\u编码(get\u object\u vars($\u request))是一样的
使用上面的代码,我得到了
%7B%22name%22%3A%22myname%22%7D
,这是一个完全不同的问题。我尝试过这一点,因为json带有所有这些特殊字符
";
而不是引号标记,json#decode返回值为空。尝试一下:$data=json#decode(stripslashes(file#get#contents()php://input")));您也可以使用其他函数删除其他字符。此函数取代了slashes我已经尝试过了,因为json包含所有这些特殊字符
";
,而不是引号,json#u decode返回值为空。请尝试一下:$data=json_decode(stripslashes)(file#get_contents()php://input")));您也可以使用其他函数删除其他字符。此函数替换斜杠