像这种 JSON 数据转化成对象后,如何在不知道对象属性名的情况下,循环获取到所有属性的值,并且得到每个值对应的属性名。

2019-10-28 08:17:30 +08:00
 JingNi
{
"status": "success",
"country": "加拿大",
"countryCode": "CA",
"region": "QC",
"regionName": "Quebec",
"city": "蒙特利尔",
"zip": "H1S",
"lat": 45.5808,
"lon": -73.5825,
"timezone": "America/Toronto",
"isp": "Le Groupe Videotron Ltee",
"org": "Videotron Ltee",
"as": "AS5769 Videotron Telecom Ltee",
"query": "24.48.0.1"
}
5612 次点击
所在节点    PHP
29 条回复
starerlloll
2019-10-28 08:24:25 +08:00
1. 反射
2. 先转成 JSONobject,然后里面有个 values()的方法, 包含了所有的属性
starerlloll
2019-10-28 08:24:56 +08:00
说错,是 keys ()
loveToMy1
2019-10-28 08:26:23 +08:00
for in 循环啊
bequt
2019-10-28 08:28:51 +08:00
先 loads
keys 再遍历啊
JingNi
2019-10-28 08:31:44 +08:00
@starerlloll 谢谢,我待会试试
JingNi
2019-10-28 08:33:00 +08:00
@loveToMy1 PHP 不像 JS 那样,没有 for in 吧,只有 foreach,foreach($data as $key)得到的$key 不是属性名,直接就得到属性值了。
zsxeee
2019-10-28 08:35:49 +08:00
@JingNi foreach($data as $key=>$value)
JingNi
2019-10-28 08:37:42 +08:00
@zsxeee 哇,学到了,谢谢!!!
way2create
2019-10-28 08:44:03 +08:00
首先 7L 那样,其次这个可以转成数组,最后除了 7 其他回答的是 php 的吗?还是我孤陋寡闻了
Drinker
2019-10-28 08:59:15 +08:00
如果是 js,使用 for in 这种方式可以拿到,java 后台的转成 jsonobject,调用 keys(),拿到所有的属性。
galikeoy
2019-10-28 09:02:06 +08:00
不同语言得方法都差不多
BigPig666
2019-10-28 09:09:03 +08:00
楼主手册多看看
lihongjie0209
2019-10-28 09:11:39 +08:00
转为 map 直接循环就好了
axbx
2019-10-28 09:25:21 +08:00
转成 map,然后 foreach 循环,拿到 key 和 value
goodSleep
2019-10-28 09:39:39 +08:00
下次可以先标明编程语言哦
xh520630
2019-10-28 09:44:14 +08:00
@goodSleep 这是 php 节点...还能啥语言= =
ShundL
2019-10-28 09:47:45 +08:00
基本的 foreach 使用,php 好惨。。。
zhuzhibin
2019-10-28 09:56:49 +08:00
老哥 ...你的基础
Rekkles
2019-10-28 09:57:08 +08:00
心疼 PHP 多看看文档
$keys = array_keys($arr);
$values = array_values($arr);
NerverLibis
2019-10-28 09:58:55 +08:00
@Rekkles 为何要说破…

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/613512

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX