V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
JingNi
V2EX  ›  PHP

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

  •  
  •   JingNi · 2019-10-28 08:17:30 +08:00 · 5598 次点击
    这是一个创建于 1635 天前的主题,其中的信息可能已经有所发展或是发生改变。
    {
    "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"
    }
    29 条回复    2019-10-31 09:12:09 +08:00
    starerlloll
        1
    starerlloll  
       2019-10-28 08:24:25 +08:00
    1. 反射
    2. 先转成 JSONobject,然后里面有个 values()的方法, 包含了所有的属性
    starerlloll
        2
    starerlloll  
       2019-10-28 08:24:56 +08:00
    说错,是 keys ()
    loveToMy1
        3
    loveToMy1  
       2019-10-28 08:26:23 +08:00
    for in 循环啊
    bequt
        4
    bequt  
       2019-10-28 08:28:51 +08:00
    先 loads
    keys 再遍历啊
    JingNi
        5
    JingNi  
    OP
       2019-10-28 08:31:44 +08:00
    @starerlloll 谢谢,我待会试试
    JingNi
        6
    JingNi  
    OP
       2019-10-28 08:33:00 +08:00
    @loveToMy1 PHP 不像 JS 那样,没有 for in 吧,只有 foreach,foreach($data as $key)得到的$key 不是属性名,直接就得到属性值了。
    zsxeee
        7
    zsxeee  
       2019-10-28 08:35:49 +08:00 via Android   ❤️ 1
    @JingNi foreach($data as $key=>$value)
    JingNi
        8
    JingNi  
    OP
       2019-10-28 08:37:42 +08:00
    @zsxeee 哇,学到了,谢谢!!!
    way2create
        9
    way2create  
       2019-10-28 08:44:03 +08:00
    首先 7L 那样,其次这个可以转成数组,最后除了 7 其他回答的是 php 的吗?还是我孤陋寡闻了
    Drinker
        10
    Drinker  
       2019-10-28 08:59:15 +08:00
    如果是 js,使用 for in 这种方式可以拿到,java 后台的转成 jsonobject,调用 keys(),拿到所有的属性。
    galikeoy
        11
    galikeoy  
       2019-10-28 09:02:06 +08:00
    不同语言得方法都差不多
    BigPig666
        12
    BigPig666  
       2019-10-28 09:09:03 +08:00
    楼主手册多看看
    lihongjie0209
        13
    lihongjie0209  
       2019-10-28 09:11:39 +08:00
    转为 map 直接循环就好了
    axbx
        14
    axbx  
       2019-10-28 09:25:21 +08:00
    转成 map,然后 foreach 循环,拿到 key 和 value
    goodSleep
        15
    goodSleep  
       2019-10-28 09:39:39 +08:00 via Android
    下次可以先标明编程语言哦
    xh520630
        16
    xh520630  
       2019-10-28 09:44:14 +08:00
    @goodSleep 这是 php 节点...还能啥语言= =
    ShundL
        17
    ShundL  
       2019-10-28 09:47:45 +08:00
    基本的 foreach 使用,php 好惨。。。
    zhuzhibin
        18
    zhuzhibin  
       2019-10-28 09:56:49 +08:00 via iPhone
    老哥 ...你的基础
    Rekkles
        19
    Rekkles  
       2019-10-28 09:57:08 +08:00
    心疼 PHP 多看看文档
    $keys = array_keys($arr);
    $values = array_values($arr);
    NerverLibis
        20
    NerverLibis  
       2019-10-28 09:58:55 +08:00 via iPhone
    @Rekkles 为何要说破…
    bzj
        21
    bzj  
       2019-10-28 10:12:39 +08:00
    楼主先打好基础再来吧,连 foreach 的标准写法都不知道,你写代码都是凭自己想的吗?
    wysnylc
        22
    wysnylc  
       2019-10-28 12:35:23 +08:00
    心疼 PHPER 呜呜呜
    qaz168000
        23
    qaz168000  
       2019-10-28 15:06:43 +08:00
    还是 7L 说的对
    coco65535Plus
        24
    coco65535Plus  
       2019-10-28 16:39:27 +08:00
    用 Gson 解析的话,可以转成 JsonObject,导出 members 字段,members 是个 LinkedTreeMap 结构。剩下的工作就是便利 members 了。

    kotlin:JsonParser().parse("Your JSON str").asJsonObject.entrySet()
    linvaux
        25
    linvaux  
       2019-10-28 22:28:59 +08:00
    for k in data_keys():
    print(k,data[key])
    loveToMy1
        26
    loveToMy1  
       2019-10-29 08:33:19 +08:00
    @JingNi 哦哦 我还以为是 js 的
    weirdo
        27
    weirdo  
       2019-10-29 11:20:55 +08:00
    七楼以前我还以为这不是 php 版块
    swordne
        28
    swordne  
       2019-10-30 13:56:25 +08:00
    这不是 PHPer 的常规操作么?
    json_decode($json, true);
    foreach($arr, $key => $val){}
    一脸闷逼。
    goodSleep
        29
    goodSleep  
       2019-10-31 09:12:09 +08:00 via Android
    @xh520630 抱歉,是我眼瞎了。。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5271 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 05:56 · PVG 13:56 · LAX 22:56 · JFK 01:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.