PHP 能否实现类似 JAVA 中 Gson

@Ta 2021-06-27发布,2021-06-27修改 5493点击

表述可能不准确或模糊,举个例子

有以下 JSON 数据

{
    "code":200,
    "msg":"这是信息",
    "data":[
        {
            "id":1,
            "nickname":"昵称"
        },
        {
            "id":2,
            "nickname":"昵称2222"
        }
    ]
}

生成 JAVA 实体类:

public class JsonRootBean {

    private int code;
    private String msg;
    private List<Data> data;
    public void setCode(int code) {
         this.code = code;
     }
     public int getCode() {
         return code;
     }

    public void setMsg(String msg) {
         this.msg = msg;
     }
     public String getMsg() {
         return msg;
     }

    public void setData(List<Data> data) {
         this.data = data;
     }
     public List<Data> getData() {
         return data;
     }
}

public class Data {

    private int id;
    private String nickname;
    public void setId(int id) {
         this.id = id;
     }
     public int getId() {
         return id;
     }

    public void setNickname(String nickname) {
         this.nickname = nickname;
     }
     public String getNickname() {
         return nickname;
     }

}

使用

//此处省略部分代码

String json = "此处省略上述JSON数据";
JsonRootBean jrb = Gson::fromJson(json, JsonRootBean.class);

//然后配合 IDE 的语法提示就可以很方便的“调用方法”获取想要的数据

jrb.getCode()

所以,PHP 有没有类似的实现方法

回复列表(10|隐藏机器人聊天)
  • @Ta / 2021-06-27 / /

    @老虎会游泳,万能🐯

  • @Ta / 2021-06-27 / /

    @老虎会游泳,其实我是想要那种根据 JSON 的语法提示 jrb.getXXXXXX()

    PHP:jrb->getXXXXXX()

  • @Ta / 2021-06-27 / /

    @NowTime,是因为有了“生成 JAVA 实体类”这一步,IDE才有提示的。如果你去给PHP也按JSON的字段写一个“实体类”,那也会有提示。但是有没有自动生成的工具我就不知道了,因为json_decode返回的对象太好用,我根本没必要去研究这个。

  • @Ta / 2021-06-27 / /
    @NowTime,就是因为Java和c#这种需要把JSon解析绑定到实体类,所以对于动态字段兼容非常差,php解析成class后,可以用函数生成实体类的,
  • @Ta / 2021-06-27 / /
    应该没有,像php这种脚本语言,是完全没必要的,静态编译强类型语言才需要这样做。比如java,go,c#

    而上面的都有在线工具,就是没php的

    image.png


    当然,你可以自己写,此类工具的原理之一可以是字符串拼接,所以其实也简单

  • @Ta / 2021-06-29 / /

    看到标题,感觉有点本末倒置.

    进来一看,还真是.

    我的理解是gson是为了为强类型语言解析动态json问题的纾困.

    而php js 天生支持json良好,应该不需要相关功能.

    如果是代码提示,也没有这个必要...个人看法
    小米MIX2s(白)

  • @Ta / 2021-07-02 / /

    @老虎会游泳@水木易安
    其实我就想语法提示,懒得再输入

  • @Ta / 2021-07-02 / /

    @无道@胡椒舰长,了解了 了解了

  • @Ta / 2021-07-02 / /

    @水木易安,哈哈哈 好的

添加新回复
回复需要登录