在PHP中处理嵌套的JSON POST请求

我试图让python客户端发送一个包含嵌套JSON的帖子请求</ p>

{“nested”:{“field1”:“response1”,“field2”:“response2”}}
</ code> </ pre>

我的python 代码在这里</ p>

  from urllib.parse import urlencode 
from urllib.request import Request,urlopen

url =“http: //localhost/api/vscore.php"
post_fields={"nested":{"field1":"response1“,”field2“:”response2“}}

request = Request(url,urlencode(post_fields)。 encode())
json = urlopen(request).read()。decode()
print(json)
</ code> </ pre>

PHP代码:</ p>

 <代码>的print_r($ _ POST [ “嵌套”]); 
</代码> </ PRE>

返回</ p>

 <代码 > {'field2':'response2','field1':'response1'} 
</ code> </ pre>

但当我尝试使用$ _POST [“嵌套”访问“field1”时 “] [”field1“],它返回:</ p>

  {
</ code> </ pre>

而不是返回”response1“ 。 如何让我的代码返回嵌套JSON中的字段?</ p>
</ div>

展开原文

原文

I am trying to have a python client send a post request which contains nested JSON like such

{"nested":{"field1":"response1", "field2":"response2"}}

My python code is here

from urllib.parse import urlencode
from urllib.request import Request, urlopen

url="http://localhost/api/vscore.php"
post_fields={"nested":{"field1":"response1", "field2":"response2"}}

request = Request(url, urlencode(post_fields).encode())
json = urlopen(request).read().decode()
print(json)

PHP code:

print_r($_POST["nested"]);

returns

{'field2': 'response2', 'field1': 'response1'}

but when I try to access "field1" with $_POST["nested"]["field1"], it returns this:

{

instead of returning "response1". How can I get my code to return fields in nested JSON?

dongying7847
dongying7847 可能重复的php从json编码中获取值
大约 2 年之前 回复
douchendan0040
douchendan0040 它不是真正的“嵌套JSON”,它只是对象中的一个对象。这里只有一个JSON编码。
大约 2 年之前 回复

1个回答



如果请求是json格式,那么你应该 json_decode 首先然后尝试访问。 嵌套</ code>键应该被访问为:</ p>

  $ nested = json_decode($ _ POST [“nested”],true); 
$ field = $ 嵌套[“field1”];
</ code> </ pre>
</ div>

展开原文

原文

If request is in json form then, you should json_decode it first and then try to access. nested key should be accessed as:

$nested = json_decode($_POST["nested"], true);
$field = $nested["field1"];

donglang9880
donglang9880 尝试print_r($ nested)并检查结果是什么。
大约 2 年之前 回复
dousong5161
dousong5161 我试过了。 服务器没有响应任何字符串。
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问