第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

如何為 Json 對象使用動(dòng)態(tài)屬性名稱

如何為 Json 對象使用動(dòng)態(tài)屬性名稱

慕容708150 2022-10-07 17:37:56
我們?nèi)绾问?JSON 屬性名稱動(dòng)態(tài)化。例如public class Value {    @JsonProperty(value = "value")    private String val;    public void setVal(String val) {        this.val = val;    }    public String getVal() {        return val;    }}序列化此對象時(shí),它被保存為,{"value": "actual_value_saved"}但我想讓密鑰也像{"new_key": "actual_value_saved"}. 任何幫助深表感謝。
查看完整描述

3 回答

?
鳳凰求蠱

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超4個(gè)贊

您可以使用JsonAnySetter JsonAnyGetter注釋。后面可以使用Map實(shí)例。如果您總是one-key-object可以Collections.singletonMap在其他情況下使用HashMap或其他實(shí)現(xiàn)中使用。下面的示例顯示了您可以輕松地使用這種方法并根據(jù)key需要?jiǎng)?chuàng)建任意數(shù)量的隨機(jī) -s:


import com.fasterxml.jackson.annotation.JsonAnyGetter;

import com.fasterxml.jackson.annotation.JsonAnySetter;

import com.fasterxml.jackson.databind.ObjectMapper;

import java.util.Collections;

import java.util.Map;

import java.util.Objects;


public class JsonApp {


    public static void main(String[] args) throws Exception {

        DynamicJsonsFactory factory = new DynamicJsonsFactory();

        ObjectMapper mapper = new ObjectMapper();


        System.out.println(mapper.writeValueAsString(factory.createUser("Vika")));

        System.out.println(mapper.writeValueAsString(factory.createPhone("123-456-78-9")));

        System.out.println(mapper.writeValueAsString(factory.any("val", "VAL!")));

    }

}


class Value {


    private Map<String, String> values;


    @JsonAnySetter

    public void put(String key, String value) {

        values = Collections.singletonMap(key, value);

    }


    @JsonAnyGetter

    public Map<String, String> getValues() {

        return values;

    }


    @Override

    public String toString() {

        return values.toString();

    }

}


class DynamicJsonsFactory {


    public Value createUser(String name) {

        return any("name", name);

    }


    public Value createPhone(String number) {

        return any("phone", number);

    }


    public Value any(String key, String value) {

        Value v = new Value();

        v.put(Objects.requireNonNull(key), Objects.requireNonNull(value));


        return v;

    }

}

上面的代碼打印:


{"name":"Vika"}

{"phone":"123-456-78-9"}

{"val":"VAL!"}


查看完整回答
反對 回復(fù) 2022-10-07
?
千萬里不及你

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊

您可以將所有可能的名稱作為變量,并對它們進(jìn)行注釋,以便在為 null 時(shí)忽略它們。這樣,您只能在 JSON 中獲取具有值的


然后更改您的設(shè)置器以輸入映射到您想要的鍵的變量。


class Value {


    @JsonProperty("val")

    @JsonInclude(JsonInclude.Include.NON_NULL)

    private String val;


    @JsonProperty("new_key")

    @JsonInclude(JsonInclude.Include.NON_NULL)

    private String newKey;


    @JsonProperty("any_random_string")

    @JsonInclude(JsonInclude.Include.NON_NULL)

    private String anyRandomString;


    public void setVal(String s) {

        if(/* condition1 */)

            this.val = s;

        else if (/* condition2 */) {

            this.newKey = s;

        } else  if (/* condition3 */) {

            this.anyRandomString = s;

        }

    }


}



查看完整回答
反對 回復(fù) 2022-10-07
?
qq_花開花謝_0

TA貢獻(xiàn)1835條經(jīng)驗(yàn) 獲得超7個(gè)贊

好問題@Prasad,這個(gè)答案與 JAVA 或 SPRING BOOT 無關(guān),我只是提出這個(gè)答案,因?yàn)槲宜阉鬟^使用 node 來做到這一點(diǎn),并希望這能以某種方式幫助某人。在 JAVASCRIPT 中,我們可以為 JSON 對象添加動(dòng)態(tài)屬性名稱,如下所示


var dogs = {};


var dogName = 'rocky';


dogs[dogName] = {

    age: 2,

    otherSomething: 'something'

};


dogName = 'lexy';


dogs[dogName] = {

    age: 3,

    otherSomething: 'something'

};


console.log(dogs);

但是當(dāng)我們需要?jiǎng)討B(tài)更改名稱時(shí),我們必須

  1. 得到那個(gè)屬性

  2. 并創(chuàng)建另一個(gè)具有相同內(nèi)容和新名稱的屬性

  3. 并從 JSON 中刪除舊屬性

  4. 將新屬性分配給 JSON

除此方法外,還有另一種動(dòng)態(tài)更改 JSON 名稱的方法,在此先感謝


查看完整回答
反對 回復(fù) 2022-10-07
  • 3 回答
  • 0 關(guān)注
  • 314 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號