cpdyj0
V2EX  ›  问与答

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

  •  
  •   cpdyj0 · Mar 2, 2019 · 2588 views
    This topic created in 2806 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
    6IbA2bj5ip3tK49j
    Mar 2, 2019 via iPhone❤️1
    1
    把 server 映射成 JsonNode 得了。
    yemoluo
    yemoluo
    Mar 2, 2019❤️1
    2
    没理解你的意图,自己用 TypeReference 实现了一遍 https://www.twle.cn/t/547#reply0
    Cbdy
    Cbdy
    Mar 2, 2019 via Android❤️1
    3
    我一般用这个,Jackson 简单封装下,只有三个类
    https://github.com/cbdyzj/jojo
    yemoluo
    yemoluo
    Mar 2, 2019❤️1
    4
    @Cbdy 看了你写的封装和测试用例,很赞,不过我不知道你这个要怎么处理 lz 说的,能给一个示例么?

    我的 Java 水平,菜菜菜
    Cbdy
    Cbdy
    Mar 2, 2019❤️1
    5
    @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
    yemoluo
    Mar 2, 2019❤️1
    6
    @Cbdy 谢谢
    hpeng
    hpeng
    Mar 2, 2019❤️1
    7
    你先把 server 的 bean 定义出来, 然后写反序列化器(JsonDeserializer), 然后反序列化器里面可以用 JsonParser 去遍历 server, 然后自己映射 bean 里面的字段.
    cpdyj0
    cpdyj0
    OP
    Mar 2, 2019
    8
    感谢各位,,,大概是我对 Jackson 还不够熟悉
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1942 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 01:10 · PVG 09:10 · LAX 17:10 · JFK 20:10
    ♥ Do have faith in what you're doing.