2

あなたのJsonがフリーフォームのペアの束で構成されているとしましょう

"config": {
    "k1": "abc",
    "k2": "xyz"
},

ルール

  • 鍵が何本あるかわからない
  • すべての値は文字列になります
  • マップをキーでアドレス指定できるようにしたい

値の一部は文字列で、その他は数値です。私はそれを考えていました HashMap

public class Outer {

    private Config config = new Config();

    public Config getConfig() {
        return config;
    }

    public void setConfig(Config config) {
        this.config = config;
    }


    public class Config {
        private Map<String, String> map = new HashMap<>();

        public Map<String, String> getMap() {
            return map;
        }

        public void setMap(Map<String, String> map) {
            this.map = map;
        }
    }
}

getConfig()これをテストすると、 null 以外の値が返されることがわかります。しかし、私が得るとき、私はgetMap()得るnull

ここで何が欠けているのかを理解するのを手伝ってください。

4

1 に答える 1

3

あなただけを使用する必要があります:

public class Outer {

    private Map<String, String> config = new HashMap<>();

    public Map<String, String> getConfig() {
        return config;
    }
    public void setConfig(Map<String, String> config) {
        this.config = config;
    }
}

あなたが書いたクラスモデルでは、次のような JSONを記述しています。

"config": {
    "map": {
        "k1": "abc",
        "k2": "xyz"
    }
},

しかし、ご覧のとおり、それはあなたが望むものではありません...

JSONのフィールドは、 ...を表すconfigフィールドを含むオブジェクトではなく、フィールド自体が!を表すことに注意してください。mapMapconfig Map

于 2013-07-05T15:47:50.327 に答える