cpdyj0
V2EX  ›  问与答

想问下有哪些讲解 FastXML/Jackson 的资料

  •  
  •   cpdyj0 · Mar 2, 2019 · 2211 views
    This topic created in 2654 days ago, the information mentioned may be changed or developed.

    文档看了,注解文档也看了,但是还是不知道怎么优雅的 map 下面这种 json

    {
      "hosts": {
        "baidu.com": "127.0.0.1"
      },
      "servers": [
        {
          "address": "1.2.3.4",
          "port": 5353,
          "domains": [
            "domain:example.com"
          ]
        },
        "8.8.8.8",
        "8.8.4.4",
        "localhost"
      ],
      "clientIp": "1.2.3.4",
      "tag": "dns_inbound"
    }
    

    主要是servers这个,难道要全部 map 成 Object 然后再去自行处理吗?

    8 replies    2019-03-02 19:26:22 +08:00
    6IbA2bj5ip3tK49j
        1
    6IbA2bj5ip3tK49j  
       Mar 2, 2019 via iPhone   ❤️ 1
    把 server 映射成 JsonNode 得了。
    yemoluo
        2
    yemoluo  
       Mar 2, 2019   ❤️ 1
    没理解你的意图,自己用 TypeReference 实现了一遍 https://www.twle.cn/t/547#reply0
    Cbdy
        3
    Cbdy  
       Mar 2, 2019 via Android   ❤️ 1
    我一般用这个,Jackson 简单封装下,只有三个类
    https://github.com/cbdyzj/jojo
    yemoluo
        4
    yemoluo  
       Mar 2, 2019   ❤️ 1
    @Cbdy 看了你写的封装和测试用例,很赞,不过我不知道你这个要怎么处理 lz 说的,能给一个示例么?

    我的 Java 水平,菜菜菜
    Cbdy
        5
    Cbdy  
       Mar 2, 2019   ❤️ 1
    @GTim
    var servers = new JsonObject(json).getJsonArray("servers");
    assert "1.2.3.4".equals(servers.getJsonObject(0).getString("address"));
    assert Integer.valueOf(5353).equals(servers.getJsonObject(0).getInteger("port"));
    assert "domain:example.com".equals(servers.getJsonObject(0).getJsonArray("domains").getString(0));
    assert "8.8.8.8".equals(servers.getString(1));
    assert "8.8.4.4".equals(servers.getString(2));
    assert "localhost".equals(servers.getString(3));
    yemoluo
        6
    yemoluo  
       Mar 2, 2019   ❤️ 1
    @Cbdy 谢谢
    hpeng
        7
    hpeng  
       Mar 2, 2019   ❤️ 1
    你先把 server 的 bean 定义出来, 然后写反序列化器(JsonDeserializer), 然后反序列化器里面可以用 JsonParser 去遍历 server, 然后自己映射 bean 里面的字段.
    cpdyj0
        8
    cpdyj0  
    OP
       Mar 2, 2019
    感谢各位,,,大概是我对 Jackson 还不够熟悉
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2896 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 12:35 · PVG 20:35 · LAX 05:35 · JFK 08:35
    ♥ Do have faith in what you're doing.