Я получаю json ответ в объекте, но я хочу быть в Json массив - PullRequest
0 голосов
/ 17 апреля 2020

Я получаю список монет от API https://min-api.cryptocompare.com/data/all/coinlist?api-key. Он возвращает json ответ, подобный этому -

{
  "Response": "Success",
  "Message": "Coin list succesfully returned!",
  "Data": {
    "42": {
      "Id": "4321",
      "Url": "/coins/42/overview",
      "ImageUrl": "/media/35650717/42.jpg",
      "ContentCreatedOn": 1427211129,
      "Name": "42",
      "Symbol": "42",
      "CoinName": "42 Coin",
      "FullName": "42 Coin (42)",
      "Algorithm": "Scrypt",
      "ProofType": "PoW/PoS",
      "FullyPremined": "0",
      "TotalCoinSupply": "42",
      "BuiltOn": "N/A",
      "SmartContractAddress": "N/A",
      "DecimalPlaces": 0,
      "PreMinedValue": "N/A",
      "TotalCoinsFreeFloat": "N/A",
      "SortOrder": "34",
      "Sponsored": false,
      "Taxonomy": {
        "Access": "",
        "FCA": "",
        "FINMA": "",
        "Industry": "",
        "CollateralizedAsset": "",
        "CollateralizedAssetType": "",
        "CollateralType": "",
        "CollateralInfo": ""
      },
      "Rating": {
        "Weiss": {
          "Rating": "",
          "TechnologyAdoptionRating": "",
          "MarketPerformanceRating": ""
        }
      },
      "IsTrading": true,
      "TotalCoinsMined": 41.9999528,
      "BlockNumber": 173122,
      "NetHashesPerSecond": 0,
      "BlockReward": 0,
      "BlockTime": 0
    },
    "300": {
      "Id": "749869",
      "Url": "/coins/300/overview",
      "ImageUrl": "/media/27010595/300.png",
      "ContentCreatedOn": 1517935016,
      "Name": "300",
      "Symbol": "300",
      "CoinName": "300 token",
      "FullName": "300 token (300)",
      "Algorithm": "N/A",
      "ProofType": "N/A",
      "FullyPremined": "0",
      "TotalCoinSupply": "300",
      "BuiltOn": "7605",
      "SmartContractAddress": "0xaec98a708810414878c3bcdf46aad31ded4a4557",
      "DecimalPlaces": 18,
      "PreMinedValue": "N/A",
      "TotalCoinsFreeFloat": "N/A",
      "SortOrder": "2212",
      "Sponsored": false,
      "Taxonomy": {
        "Access": "",
        "FCA": "",
        "FINMA": "",
        "Industry": "",
        "CollateralizedAsset": "",
        "CollateralizedAssetType": "",
        "CollateralType": "",
        "CollateralInfo": ""
      },
      "Rating": {
        "Weiss": {
          "Rating": "",
          "TechnologyAdoptionRating": "",
          "MarketPerformanceRating": ""
        }
      },
      "IsTrading": true,
      "TotalCoinsMined": 300,
      "BlockNumber": 0,
      "NetHashesPerSecond": 0,
      "BlockReward": 0,
      "BlockTime": 0
    }
  }
}

Когда я создаю для него класс pojo, он создает класс _42, а также класс _300 означает, что для каждого объекта он создает новый класс. Вот оно: -

package com.mountblue.cryptocoin.entity;

import com.google.gson.annotations.SerializedName;

public class CoinBean {
    /**
     * Response : Success
     * Message : Coin list succesfully returned!
     * Data : {"42":{"Id":"4321","Url":"/coins/42/overview","ImageUrl":"/media/35650717/42.jpg","ContentCreatedOn":1427211129,"Name":"42","Symbol":"42","CoinName":"42 Coin","FullName":"42 Coin (42)","Algorithm":"Scrypt","ProofType":"PoW/PoS","FullyPremined":"0","TotalCoinSupply":"42","BuiltOn":"N/A","SmartContractAddress":"N/A","DecimalPlaces":0,"PreMinedValue":"N/A","TotalCoinsFreeFloat":"N/A","SortOrder":"34","Sponsored":false,"Taxonomy":{"Access":"","FCA":"","FINMA":"","Industry":"","CollateralizedAsset":"","CollateralizedAssetType":"","CollateralType":"","CollateralInfo":""},"Rating":{"Weiss":{"Rating":"","TechnologyAdoptionRating":"","MarketPerformanceRating":""}},"IsTrading":true,"TotalCoinsMined":41.9999528,"BlockNumber":173122,"NetHashesPerSecond":0,"BlockReward":0,"BlockTime":0},"300":{"Id":"749869","Url":"/coins/300/overview","ImageUrl":"/media/27010595/300.png","ContentCreatedOn":1517935016,"Name":"300","Symbol":"300","CoinName":"300 token","FullName":"300 token (300)","Algorithm":"N/A","ProofType":"N/A","FullyPremined":"0","TotalCoinSupply":"300","BuiltOn":"7605","SmartContractAddress":"0xaec98a708810414878c3bcdf46aad31ded4a4557","DecimalPlaces":18,"PreMinedValue":"N/A","TotalCoinsFreeFloat":"N/A","SortOrder":"2212","Sponsored":false,"Taxonomy":{"Access":"","FCA":"","FINMA":"","Industry":"","CollateralizedAsset":"","CollateralizedAssetType":"","CollateralType":"","CollateralInfo":""},"Rating":{"Weiss":{"Rating":"","TechnologyAdoptionRating":"","MarketPerformanceRating":""}},"IsTrading":true,"TotalCoinsMined":300,"BlockNumber":0,"NetHashesPerSecond":0,"BlockReward":0,"BlockTime":0}}
     */

    private String Response;
    private String Message;
    private DataBean Data;

    public String getResponse() {
        return Response;
    }

    public void setResponse(String Response) {
        this.Response = Response;
    }

    public String getMessage() {
        return Message;
    }

    public void setMessage(String Message) {
        this.Message = Message;
    }

    public DataBean getData() {
        return Data;
    }

    public void setData(DataBean Data) {
        this.Data = Data;
    }

    public static class DataBean {
        /**
         * 42 : {"Id":"4321","Url":"/coins/42/overview","ImageUrl":"/media/35650717/42.jpg","ContentCreatedOn":1427211129,"Name":"42","Symbol":"42","CoinName":"42 Coin","FullName":"42 Coin (42)","Algorithm":"Scrypt","ProofType":"PoW/PoS","FullyPremined":"0","TotalCoinSupply":"42","BuiltOn":"N/A","SmartContractAddress":"N/A","DecimalPlaces":0,"PreMinedValue":"N/A","TotalCoinsFreeFloat":"N/A","SortOrder":"34","Sponsored":false,"Taxonomy":{"Access":"","FCA":"","FINMA":"","Industry":"","CollateralizedAsset":"","CollateralizedAssetType":"","CollateralType":"","CollateralInfo":""},"Rating":{"Weiss":{"Rating":"","TechnologyAdoptionRating":"","MarketPerformanceRating":""}},"IsTrading":true,"TotalCoinsMined":41.9999528,"BlockNumber":173122,"NetHashesPerSecond":0,"BlockReward":0,"BlockTime":0}
         * 300 : {"Id":"749869","Url":"/coins/300/overview","ImageUrl":"/media/27010595/300.png","ContentCreatedOn":1517935016,"Name":"300","Symbol":"300","CoinName":"300 token","FullName":"300 token (300)","Algorithm":"N/A","ProofType":"N/A","FullyPremined":"0","TotalCoinSupply":"300","BuiltOn":"7605","SmartContractAddress":"0xaec98a708810414878c3bcdf46aad31ded4a4557","DecimalPlaces":18,"PreMinedValue":"N/A","TotalCoinsFreeFloat":"N/A","SortOrder":"2212","Sponsored":false,"Taxonomy":{"Access":"","FCA":"","FINMA":"","Industry":"","CollateralizedAsset":"","CollateralizedAssetType":"","CollateralType":"","CollateralInfo":""},"Rating":{"Weiss":{"Rating":"","TechnologyAdoptionRating":"","MarketPerformanceRating":""}},"IsTrading":true,"TotalCoinsMined":300,"BlockNumber":0,"NetHashesPerSecond":0,"BlockReward":0,"BlockTime":0}
         */

        @SerializedName("42")
        private _$42Bean _$42;
        @SerializedName("300")
        private _$300Bean _$300;

        public _$42Bean get_$42() {
            return _$42;
        }

        public void set_$42(_$42Bean _$42) {
            this._$42 = _$42;
        }

        public _$300Bean get_$300() {
            return _$300;
        }

        public void set_$300(_$300Bean _$300) {
            this._$300 = _$300;
        }

        public static class _$42Bean {
            /**
             * Id : 4321
             * Url : /coins/42/overview
             * ImageUrl : /media/35650717/42.jpg
             * ContentCreatedOn : 1427211129
             * Name : 42
             * Symbol : 42
             * CoinName : 42 Coin
             * FullName : 42 Coin (42)
             * Algorithm : Scrypt
             * ProofType : PoW/PoS
             * FullyPremined : 0
             * TotalCoinSupply : 42
             * BuiltOn : N/A
             * SmartContractAddress : N/A
             * DecimalPlaces : 0
             * PreMinedValue : N/A
             * TotalCoinsFreeFloat : N/A
             * SortOrder : 34
             * Sponsored : false
             * Taxonomy : {"Access":"","FCA":"","FINMA":"","Industry":"","CollateralizedAsset":"","CollateralizedAssetType":"","CollateralType":"","CollateralInfo":""}
             * Rating : {"Weiss":{"Rating":"","TechnologyAdoptionRating":"","MarketPerformanceRating":""}}
             * IsTrading : true
             * TotalCoinsMined : 41.9999528
             * BlockNumber : 173122
             * NetHashesPerSecond : 0
             * BlockReward : 0
             * BlockTime : 0
             */

            private String Id;
            private String Url;
            private String ImageUrl;
            private int ContentCreatedOn;
            private String Name;
            private String Symbol;
            private String CoinName;
            private String FullName;
            private String Algorithm;
            private String ProofType;
            private String FullyPremined;
            private String TotalCoinSupply;
            private String BuiltOn;
            private String SmartContractAddress;
            private int DecimalPlaces;
            private String PreMinedValue;
            private String TotalCoinsFreeFloat;
            private String SortOrder;
            private boolean Sponsored;
            private TaxonomyBean Taxonomy;
            private RatingBean Rating;
            private boolean IsTrading;
            private double TotalCoinsMined;
            private int BlockNumber;
            private int NetHashesPerSecond;
            private int BlockReward;
            private int BlockTime;

            public String getId() {
                return Id;
            }

            public void setId(String Id) {
                this.Id = Id;
            }

            public String getUrl() {
                return Url;
            }

            public void setUrl(String Url) {
                this.Url = Url;
            }

            public String getImageUrl() {
                return ImageUrl;
            }

            public void setImageUrl(String ImageUrl) {
                this.ImageUrl = ImageUrl;
            }

            public int getContentCreatedOn() {
                return ContentCreatedOn;
            }

            public void setContentCreatedOn(int ContentCreatedOn) {
                this.ContentCreatedOn = ContentCreatedOn;
            }

            public String getName() {
                return Name;
            }

            public void setName(String Name) {
                this.Name = Name;
            }

            public String getSymbol() {
                return Symbol;
            }

            public void setSymbol(String Symbol) {
                this.Symbol = Symbol;
            }

            public String getCoinName() {
                return CoinName;
            }

            public void setCoinName(String CoinName) {
                this.CoinName = CoinName;
            }

            public String getFullName() {
                return FullName;
            }

            public void setFullName(String FullName) {
                this.FullName = FullName;
            }

            public String getAlgorithm() {
                return Algorithm;
            }

            public void setAlgorithm(String Algorithm) {
                this.Algorithm = Algorithm;
            }

            public String getProofType() {
                return ProofType;
            }

            public void setProofType(String ProofType) {
                this.ProofType = ProofType;
            }

            public String getFullyPremined() {
                return FullyPremined;
            }

            public void setFullyPremined(String FullyPremined) {
                this.FullyPremined = FullyPremined;
            }

            public String getTotalCoinSupply() {
                return TotalCoinSupply;
            }

            public void setTotalCoinSupply(String TotalCoinSupply) {
                this.TotalCoinSupply = TotalCoinSupply;
            }

            public String getBuiltOn() {
                return BuiltOn;
            }

            public void setBuiltOn(String BuiltOn) {
                this.BuiltOn = BuiltOn;
            }

            public String getSmartContractAddress() {
                return SmartContractAddress;
            }

            public void setSmartContractAddress(String SmartContractAddress) {
                this.SmartContractAddress = SmartContractAddress;
            }

            public int getDecimalPlaces() {
                return DecimalPlaces;
            }

            public void setDecimalPlaces(int DecimalPlaces) {
                this.DecimalPlaces = DecimalPlaces;
            }

            public String getPreMinedValue() {
                return PreMinedValue;
            }

            public void setPreMinedValue(String PreMinedValue) {
                this.PreMinedValue = PreMinedValue;
            }

            public String getTotalCoinsFreeFloat() {
                return TotalCoinsFreeFloat;
            }

            public void setTotalCoinsFreeFloat(String TotalCoinsFreeFloat) {
                this.TotalCoinsFreeFloat = TotalCoinsFreeFloat;
            }

            public String getSortOrder() {
                return SortOrder;
            }

            public void setSortOrder(String SortOrder) {
                this.SortOrder = SortOrder;
            }

            public boolean isSponsored() {
                return Sponsored;
            }

            public void setSponsored(boolean Sponsored) {
                this.Sponsored = Sponsored;
            }

            public TaxonomyBean getTaxonomy() {
                return Taxonomy;
            }

            public void setTaxonomy(TaxonomyBean Taxonomy) {
                this.Taxonomy = Taxonomy;
            }

            public RatingBean getRating() {
                return Rating;
            }

            public void setRating(RatingBean Rating) {
                this.Rating = Rating;
            }

            public boolean isIsTrading() {
                return IsTrading;
            }

            public void setIsTrading(boolean IsTrading) {
                this.IsTrading = IsTrading;
            }

            public double getTotalCoinsMined() {
                return TotalCoinsMined;
            }

            public void setTotalCoinsMined(double TotalCoinsMined) {
                this.TotalCoinsMined = TotalCoinsMined;
            }

            public int getBlockNumber() {
                return BlockNumber;
            }

            public void setBlockNumber(int BlockNumber) {
                this.BlockNumber = BlockNumber;
            }

            public int getNetHashesPerSecond() {
                return NetHashesPerSecond;
            }

            public void setNetHashesPerSecond(int NetHashesPerSecond) {
                this.NetHashesPerSecond = NetHashesPerSecond;
            }

            public int getBlockReward() {
                return BlockReward;
            }

            public void setBlockReward(int BlockReward) {
                this.BlockReward = BlockReward;
            }

            public int getBlockTime() {
                return BlockTime;
            }

            public void setBlockTime(int BlockTime) {
                this.BlockTime = BlockTime;
            }

            public static class TaxonomyBean {
                /**
                 * Access : 
                 * FCA : 
                 * FINMA : 
                 * Industry : 
                 * CollateralizedAsset : 
                 * CollateralizedAssetType : 
                 * CollateralType : 
                 * CollateralInfo : 
                 */

                private String Access;
                private String FCA;
                private String FINMA;
                private String Industry;
                private String CollateralizedAsset;
                private String CollateralizedAssetType;
                private String CollateralType;
                private String CollateralInfo;

                public String getAccess() {
                    return Access;
                }

                public void setAccess(String Access) {
                    this.Access = Access;
                }

                public String getFCA() {
                    return FCA;
                }

                public void setFCA(String FCA) {
                    this.FCA = FCA;
                }

                public String getFINMA() {
                    return FINMA;
                }

                public void setFINMA(String FINMA) {
                    this.FINMA = FINMA;
                }

                public String getIndustry() {
                    return Industry;
                }

                public void setIndustry(String Industry) {
                    this.Industry = Industry;
                }

                public String getCollateralizedAsset() {
                    return CollateralizedAsset;
                }

                public void setCollateralizedAsset(String CollateralizedAsset) {
                    this.CollateralizedAsset = CollateralizedAsset;
                }

                public String getCollateralizedAssetType() {
                    return CollateralizedAssetType;
                }

                public void setCollateralizedAssetType(String CollateralizedAssetType) {
                    this.CollateralizedAssetType = CollateralizedAssetType;
                }

                public String getCollateralType() {
                    return CollateralType;
                }

                public void setCollateralType(String CollateralType) {
                    this.CollateralType = CollateralType;
                }

                public String getCollateralInfo() {
                    return CollateralInfo;
                }

                public void setCollateralInfo(String CollateralInfo) {
                    this.CollateralInfo = CollateralInfo;
                }
            }

            public static class RatingBean {
                /**
                 * Weiss : {"Rating":"","TechnologyAdoptionRating":"","MarketPerformanceRating":""}
                 */

                private WeissBean Weiss;

                public WeissBean getWeiss() {
                    return Weiss;
                }

                public void setWeiss(WeissBean Weiss) {
                    this.Weiss = Weiss;
                }

                public static class WeissBean {
                    /**
                     * Rating : 
                     * TechnologyAdoptionRating : 
                     * MarketPerformanceRating : 
                     */

                    private String Rating;
                    private String TechnologyAdoptionRating;
                    private String MarketPerformanceRating;

                    public String getRating() {
                        return Rating;
                    }

                    public void setRating(String Rating) {
                        this.Rating = Rating;
                    }

                    public String getTechnologyAdoptionRating() {
                        return TechnologyAdoptionRating;
                    }

                    public void setTechnologyAdoptionRating(String TechnologyAdoptionRating) {
                        this.TechnologyAdoptionRating = TechnologyAdoptionRating;
                    }

                    public String getMarketPerformanceRating() {
                        return MarketPerformanceRating;
                    }

                    public void setMarketPerformanceRating(String MarketPerformanceRating) {
                        this.MarketPerformanceRating = MarketPerformanceRating;
                    }
                }
            }
        }

        public static class _$300Bean {
            /**
             * Id : 749869
             * Url : /coins/300/overview
             * ImageUrl : /media/27010595/300.png
             * ContentCreatedOn : 1517935016
             * Name : 300
             * Symbol : 300
             * CoinName : 300 token
             * FullName : 300 token (300)
             * Algorithm : N/A
             * ProofType : N/A
             * FullyPremined : 0
             * TotalCoinSupply : 300
             * BuiltOn : 7605
             * SmartContractAddress : 0xaec98a708810414878c3bcdf46aad31ded4a4557
             * DecimalPlaces : 18
             * PreMinedValue : N/A
             * TotalCoinsFreeFloat : N/A
             * SortOrder : 2212
             * Sponsored : false
             * Taxonomy : {"Access":"","FCA":"","FINMA":"","Industry":"","CollateralizedAsset":"","CollateralizedAssetType":"","CollateralType":"","CollateralInfo":""}
             * Rating : {"Weiss":{"Rating":"","TechnologyAdoptionRating":"","MarketPerformanceRating":""}}
             * IsTrading : true
             * TotalCoinsMined : 300
             * BlockNumber : 0
             * NetHashesPerSecond : 0
             * BlockReward : 0
             * BlockTime : 0
             */

            private String Id;
            private String Url;
            private String ImageUrl;
            private int ContentCreatedOn;
            private String Name;
            private String Symbol;
            private String CoinName;
            private String FullName;
            private String Algorithm;
            private String ProofType;
            private String FullyPremined;
            private String TotalCoinSupply;
            private String BuiltOn;
            private String SmartContractAddress;
            private int DecimalPlaces;
            private String PreMinedValue;
            private String TotalCoinsFreeFloat;
            private String SortOrder;
            private boolean Sponsored;
            private TaxonomyBeanX Taxonomy;
            private RatingBeanX Rating;
            private boolean IsTrading;
            private int TotalCoinsMined;
            private int BlockNumber;
            private int NetHashesPerSecond;
            private int BlockReward;
            private int BlockTime;

            public String getId() {
                return Id;
            }

            public void setId(String Id) {
                this.Id = Id;
            }

            public String getUrl() {
                return Url;
            }

            public void setUrl(String Url) {
                this.Url = Url;
            }

            public String getImageUrl() {
                return ImageUrl;
            }

            public void setImageUrl(String ImageUrl) {
                this.ImageUrl = ImageUrl;
            }

            public int getContentCreatedOn() {
                return ContentCreatedOn;
            }

            public void setContentCreatedOn(int ContentCreatedOn) {
                this.ContentCreatedOn = ContentCreatedOn;
            }

            public String getName() {
                return Name;
            }

            public void setName(String Name) {
                this.Name = Name;
            }

            public String getSymbol() {
                return Symbol;
            }

            public void setSymbol(String Symbol) {
                this.Symbol = Symbol;
            }

            public String getCoinName() {
                return CoinName;
            }

            public void setCoinName(String CoinName) {
                this.CoinName = CoinName;
            }

            public String getFullName() {
                return FullName;
            }

            public void setFullName(String FullName) {
                this.FullName = FullName;
            }

            public String getAlgorithm() {
                return Algorithm;
            }

            public void setAlgorithm(String Algorithm) {
                this.Algorithm = Algorithm;
            }

            public String getProofType() {
                return ProofType;
            }

            public void setProofType(String ProofType) {
                this.ProofType = ProofType;
            }

            public String getFullyPremined() {
                return FullyPremined;
            }

            public void setFullyPremined(String FullyPremined) {
                this.FullyPremined = FullyPremined;
            }

            public String getTotalCoinSupply() {
                return TotalCoinSupply;
            }

            public void setTotalCoinSupply(String TotalCoinSupply) {
                this.TotalCoinSupply = TotalCoinSupply;
            }

            public String getBuiltOn() {
                return BuiltOn;
            }

            public void setBuiltOn(String BuiltOn) {
                this.BuiltOn = BuiltOn;
            }

            public String getSmartContractAddress() {
                return SmartContractAddress;
            }

            public void setSmartContractAddress(String SmartContractAddress) {
                this.SmartContractAddress = SmartContractAddress;
            }

            public int getDecimalPlaces() {
                return DecimalPlaces;
            }

            public void setDecimalPlaces(int DecimalPlaces) {
                this.DecimalPlaces = DecimalPlaces;
            }

            public String getPreMinedValue() {
                return PreMinedValue;
            }

            public void setPreMinedValue(String PreMinedValue) {
                this.PreMinedValue = PreMinedValue;
            }

            public String getTotalCoinsFreeFloat() {
                return TotalCoinsFreeFloat;
            }

            public void setTotalCoinsFreeFloat(String TotalCoinsFreeFloat) {
                this.TotalCoinsFreeFloat = TotalCoinsFreeFloat;
            }

            public String getSortOrder() {
                return SortOrder;
            }

            public void setSortOrder(String SortOrder) {
                this.SortOrder = SortOrder;
            }

            public boolean isSponsored() {
                return Sponsored;
            }

            public void setSponsored(boolean Sponsored) {
                this.Sponsored = Sponsored;
            }

            public TaxonomyBeanX getTaxonomy() {
                return Taxonomy;
            }

            public void setTaxonomy(TaxonomyBeanX Taxonomy) {
                this.Taxonomy = Taxonomy;
            }

            public RatingBeanX getRating() {
                return Rating;
            }

            public void setRating(RatingBeanX Rating) {
                this.Rating = Rating;
            }

            public boolean isIsTrading() {
                return IsTrading;
            }

            public void setIsTrading(boolean IsTrading) {
                this.IsTrading = IsTrading;
            }

            public int getTotalCoinsMined() {
                return TotalCoinsMined;
            }

            public void setTotalCoinsMined(int TotalCoinsMined) {
                this.TotalCoinsMined = TotalCoinsMined;
            }

            public int getBlockNumber() {
                return BlockNumber;
            }

            public void setBlockNumber(int BlockNumber) {
                this.BlockNumber = BlockNumber;
            }

            public int getNetHashesPerSecond() {
                return NetHashesPerSecond;
            }

            public void setNetHashesPerSecond(int NetHashesPerSecond) {
                this.NetHashesPerSecond = NetHashesPerSecond;
            }

            public int getBlockReward() {
                return BlockReward;
            }

            public void setBlockReward(int BlockReward) {
                this.BlockReward = BlockReward;
            }

            public int getBlockTime() {
                return BlockTime;
            }

            public void setBlockTime(int BlockTime) {
                this.BlockTime = BlockTime;
            }

            ......//
        }
    }
}

Я хочу, чтобы json был в ответе Array. Как я могу это сделать? Класс ApiService выглядит как -

@GET("/data/all/coinlist")
    Call<CoinBean> getCurrencyList(
            @Query("api_key") String apiKey
    );

1 Ответ

0 голосов
/ 17 апреля 2020

вы можете создать структуру ниже класса для сериализации на вашей стороне.

Class Data {
 List<Map<String, ImageInfo>> body = new ArrayList()
}
...