黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專(zhuān)注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) 學(xué)習(xí)攻略 Java學(xué)習(xí) Json轉(zhuǎn)Java對(duì)象

Json轉(zhuǎn)Java對(duì)象

更新時(shí)間:2022-10-19 10:47:28 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1325次

google提供的Gson使json直接轉(zhuǎn)對(duì)應(yīng)的java類(lèi)非常好用,但前提是該json的屬性類(lèi)型,結(jié)構(gòu)不變才行,若是那種屬性一會(huì)int一會(huì)String的情況,那么將不適用于該方式,只能通過(guò)alibaba的JSONObject一個(gè)一個(gè)按照屬性名取。

package com.cjhd.fruit.database.util;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.List;
import java.util.Map;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Maps;
import com.google.gson.Gson;
import com.google.gson.annotations.SerializedName;
import lombok.extern.slf4j.Slf4j;
/**
 * 
 * @describe 對(duì)本地文件的一些操作
 *
 * @author li.yanlong@icjhd.com
 *
 * @date 2022-4-1 19:07:17
 */
@Component
@Slf4j
public class IOUtil {
    /**
     * <pre>
     * 讀取文件內(nèi)容
     * </pre>
     * 
     * @param folderName 位于resource目錄下的文件夾名稱,如:static, static/map
     * @param fileName   文件名稱,如:resource/static/hero.json 則直接傳 /hero.json
     * @return
     */
    public String readFileContent(String folderName, String fileName) {
        URL url = this.getClass().getProtectionDomain().getClassLoader().getResource(folderName);
        if (url == null) {
            log.error("需要找的目錄 static/hero 在資源文件夾下找不到");
            return null;
        }
        File file = new File(url.getPath() + fileName);
        String content = "";
        try {
            content = FileUtils.readFileToString(file, "UTF-8");
        } catch (IOException e) {
            e.printStackTrace();
        }
        return content;
    }
    /**
     * <pre>
     * 傳入文件內(nèi)容,將內(nèi)容轉(zhuǎn)換成指定的類(lèi)型并返回。支持的類(lèi)型為:{A:{}, A:{}, A{}}, 此類(lèi)型為在一個(gè)結(jié)構(gòu)體中擁有很多小結(jié)構(gòu)體,而這些小結(jié)構(gòu)體的結(jié)構(gòu)又相同,但他們并不是數(shù)組類(lèi)型,所以專(zhuān)本用此方法來(lái)解析。
     * </pre>
     * 
     * @param <T> 需要解析的結(jié)構(gòu)體
     * @param content 整個(gè)json文件的內(nèi)容
     * @param keys 所有結(jié)構(gòu)體的變量名
     * @param classOfT 結(jié)構(gòu)體類(lèi)型
     * @return
     */
    public static <T> Map<String, T> fromJson(String content, List<String> keys, Class<T> classOfT) {
        Map<String, T> map = Maps.newHashMap();
        JSONObject jsonObject = JSONObject.parseObject(content);
        for (String key : keys) {
            if (!jsonObject.containsKey(key)) {
                continue;
            }
            JSONObject jsonObj = jsonObject.getJSONObject(key);
            Integer abilety3 = jsonObj.getInteger("Ability3");//方式一按屬性名取。            
            boolean is3Array = JSONObject.isValidArray(jsonObj.getString("Ability3"));
            boolean is4Array = JSONObject.isValidArray(jsonObj.getString("Ability4"));
            jsonObj.getJSONArray("Ability4");
            log.info("結(jié)果abiliety3:{}", abilety3);                        
//            String data = jsonObject.getString(key);
//            if (!StringUtils.isNotBlank(data)) {
//                continue;
//            }
            //方式二json轉(zhuǎn)對(duì)象,對(duì)象T中的屬性若加@SerializedName(value = "json變量名")注解,可單獨(dú)制定映射的名稱,就可以不用屬性名和json變量名一致了。
//            T obj = (T) new Gson().fromJson(data, classOfT);
//            if (obj == null) {
//                continue;
//            }
//            map.put(key, obj);
        }
        return map;
    }
}
package com.cjhd.fruit.ai.core;
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
/**
 * 
 * @describe 英雄模型數(shù)據(jù)
 *
 * @author li.yanlong@icjhd.com
 *
 * @date 2022-4-2 9:38:27
 */
@Slf4j
@Data
public class HeroModel implements Serializable{
    private static final long serialVersionUID = -5785153848105380905L;
    /** 職業(yè) */
    @SerializedName(value = "UnitVocation")
    private String unitVocation;    
    /** 基礎(chǔ)生命值 */
    @SerializedName(value = "StatusHealth")
    private Integer statusHealth;    
    /** 成長(zhǎng)生命值 */
    @SerializedName(value = "StatusHealthUp")
    private Integer statusHealthUp;    
    /** 自動(dòng)恢復(fù)生命時(shí)是否發(fā)生在停止攻擊后 */
    @SerializedName(value = "IsAutoHealthRegen")
    private Integer isAutoHealthRegen;    
    /** 基礎(chǔ)生命恢復(fù)延遲時(shí)間 */
    @SerializedName(value = "StatusHealthRegenDelayTime")
    private Integer statusHealthRegenDelayTime;    
    /** 基礎(chǔ)生命恢復(fù)間隔時(shí)間 */
    @SerializedName(value = "StatusHealthRegenTimeInterval")
    private Integer statusHealthRegenTimeInterval;    
    /** 基礎(chǔ)生命恢復(fù)百分比 */
    @SerializedName(value = "StatusHealthRegen")
    private Integer statusHealthRegen;    
    /** 基礎(chǔ)彈夾值 */
    @SerializedName(value = "StatusMana")
    private Integer statusMana;    
    /** 彈夾恢復(fù)時(shí)間 */
    @SerializedName(value = "StatusManaRegen")
    private Integer statusManaRegen;    
    /** 能量上限 */
    @SerializedName(value = "EnergyLimit")
    private Integer energyLimit;    
    /** 擊中充能值 */
    @SerializedName(value = "EnergyPerHit")
    private Integer energyPerHit;    
    /** 每秒自動(dòng)充能 */
    @SerializedName(value = "EnergyPerSec")
    private Integer energyPerSec;    
    /** 視野范圍格子 */
    @SerializedName(value = "VisionRange")
    private Integer visionRange;    
    /** 是否有空中視野 */
    @SerializedName(value = "HasFlyHeightVisual")
    private Integer hasFlyHeightVisual;    
    /** 攻擊能力 */
    @SerializedName(value = "AttackCapabilities")
    private String attackCapabilities;    
    /** 基礎(chǔ)傷害 */
    @SerializedName(value = "DamageBase")
    private Integer damageBase;    
    /** 成長(zhǎng)傷害 */
    @SerializedName(value = "DamageUp")
    private Integer damageUp;    
    /** 特技基礎(chǔ)傷害 */
    @SerializedName(value = "SpecialDamageBase")
    private Integer specialDamageBase;    
    /** 特技成長(zhǎng)傷害 */
    @SerializedName(value = "SpecialDamageUp")
    private Integer specialDamageUp;    
    /** 移動(dòng)能力 */
    @SerializedName(value = "MovementCapabilities")
    private String movementCapabilities;    
    /** 移動(dòng)速度/秒 */
    @SerializedName(value = "MovementSpeed")
    private Integer movementSpeed;    
    /** 普通技能 */
    @SerializedName(value = "Ability1")
    private Integer ability1;    
    /** 超級(jí)技能 */
    @SerializedName(value = "Ability2")
    private Integer ability2;    
    /** 妙力技能 */
    @SerializedName(value = "Ability3")
    private List<Integer> ability3;    
    /** 元?dú)饧寄?*/
    @SerializedName(value = "Ability4")
    private List<Integer> ability4;
}

 

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 国产免费无遮挡在线观看视频 | 日本动漫的18涩涩视频 | 午夜窝窝 | 欧美极品视频 | 日本免费一区视频 | 亚洲另类欧美日韩 | 日韩经典在线观看 | 一区二区不卡不卡一卡 | 亚洲精品人成网在线播放影院 | 午夜资源 | 日韩欧美精品综合久久 | 国产日韩综合 | 免费青青草 | 黄色高清在线观看 | 簧片免费在线观看 | 天天爽夜夜爽8888视频精品 | 怡春院免费 | 在线免费看毛片 | 国产精品视频久久久久久 | 天天干夜夜骑 | 欧美人成a视频www | 中文字幕一区二区三区在线观看 | 中国女人三级在线播放 | 女攻高h全肉污文play | 资源在线www天堂 | 午夜不卡视频 | 日韩不卡毛片 | 国产成人精品高清在线 | 韩国伦理片在线免费观看 | 涩涩涩丁香色婷五月网视色 | 日韩特黄特色大片免费视频 | 黑丝一区| 在线观看视频99 | jizzjizz日本老师 | 台湾乱xxxxxxxxx | 免费国产小视频在线观看 | 欧美视频在线观看一区 | 美日韩免费视频 | 狠狠的日 | 波多野结衣久久精品免费播放 | 国产全黄三级国产全黄三级书 |