fromJson方法的Gson在android中给出错误

时间:2016-07-07 12:49:03

标签: java android json gson

当我尝试实现Gson类的fromJson方法时,它会给出错误,说包gson不存在。这是我的模型类和主要活动的代码。

public class MainActivity extends AppCompatActivity {

    public static final String Logcat = "vmech";

    Button searchButton;
    EditText editTextSearch;
    TextView textViewDisplayResult;
    String newText;
    String urlstring;

    public static final String MyAPIKey =  "Your_Api_Key";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        searchButton = (Button) findViewById(R.id.buttonSerch);
        editTextSearch = (EditText) findViewById(R.id.editTextSearch);
        textViewDisplayResult = (TextView) findViewById(R.id.textViewDisplayResult);

        searchButton.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                newText = editTextSearch.getText().toString();
                if(newText.length()>0){
                    newText = newText.replace(" ", "+");
                    urlstring = "https://www.googleapis.com/books/v1/volumes?q=";
                    urlstring = urlstring + newText + "&maxResults=5" + "&key=" + MyAPIKey;

                }
                else {
                    Toast.makeText(MainActivity.this, "Please enter a book name to search.", Toast.LENGTH_LONG).show();

                }
                new JSONTask().execute(urlstring);

            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {

        MenuInflater inflater=getMenuInflater();
        inflater.inflate(R.menu.menu_main, menu);
        return true;

    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        Toast.makeText(this, "This is the Settings item", Toast.LENGTH_LONG).show();
        return true;

    }

    public class JSONTask extends AsyncTask<String, String, List<BookInfoModel>>{

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected List<BookInfoModel> doInBackground(String... params) {
            HttpURLConnection connection = null;
            BufferedReader bufferedReader = null;

            try {
                URL url = new URL(urlstring);

                connection = (HttpURLConnection) url.openConnection();
                connection.connect();

                InputStream inputstream = connection.getInputStream();
                bufferedReader = new BufferedReader(new InputStreamReader(inputstream));

                StringBuffer stringbuffer = new StringBuffer();

                String line = "";
                while ((line = bufferedReader.readLine()) != null) {
                    stringbuffer.append(line);
                }

                String finalJson = stringbuffer.toString();

                JSONObject parentObject = new JSONObject(finalJson);
                JSONArray parentArray = parentObject.getJSONArray("items");

                List<BookInfoModel> bookInfoModelList = new ArrayList<>();
                String idText = null;
                Gson gson = new Gson();
                for(int i=0; i<parentArray.length(); i++){
                    JSONObject finalObject = parentArray.getJSONObject(i);

                    BookInfoModel bookInfoModel = new gson.fromJson(finalObject.toString(),BookInfoModel.class);

                    bookInfoModelList.add(bookInfoModel);
                }


                return bookInfoModelList;

            } catch (IOException e){
                e.printStackTrace();
            } catch (JSONException e) {
                e.printStackTrace();
            } finally {
                if (connection != null)
                {
                    connection.disconnect();
                }
                try {
                    if (bufferedReader != null){
                        bufferedReader.close();
                    }
                }catch (IOException e){
                    e.printStackTrace();
                }
            }

            return null;

        }

        @Override
        protected void onPostExecute(List<BookInfoModel> result) {
            super.onPostExecute(result);
            textViewDisplayResult.setText((CharSequence) result);
        }
    }

}

这是我的JSON数据模型类。

    public class BookInfoModel {
    private List<Items> items;

    private String totalItems;

    private String kind;

    public List<Items> getItems() {
        return items;
    }

    public void setItems(List<Items> items) {
        this.items = items;
    }

    public String getTotalItems ()
    {
        return totalItems;
    }

    public void setTotalItems (String totalItems)
    {
        this.totalItems = totalItems;
    }

    public String getKind ()
    {
        return kind;
    }

    public void setKind (String kind)
    {
        this.kind = kind;
    }


    public class Items
    {
        private SaleInfo saleInfo;

        private String id;

        private SearchInfo searchInfo;

        private String etag;

        private VolumeInfo volumeInfo;

        private String selfLink;

        private AccessInfo accessInfo;

        private String kind;

        public SaleInfo getSaleInfo ()
        {
            return saleInfo;
        }

        public void setSaleInfo (SaleInfo saleInfo)
        {
            this.saleInfo = saleInfo;
        }

        public String getId ()
        {
            return id;
        }

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

        public SearchInfo getSearchInfo ()
        {
            return searchInfo;
        }

        public void setSearchInfo (SearchInfo searchInfo)
        {
            this.searchInfo = searchInfo;
        }

        public String getEtag ()
        {
            return etag;
        }

        public void setEtag (String etag)
        {
            this.etag = etag;
        }

        public VolumeInfo getVolumeInfo ()
        {
            return volumeInfo;
        }

        public void setVolumeInfo (VolumeInfo volumeInfo)
        {
            this.volumeInfo = volumeInfo;
        }

        public String getSelfLink ()
        {
            return selfLink;
        }

        public void setSelfLink (String selfLink)
        {
            this.selfLink = selfLink;
        }

        public AccessInfo getAccessInfo ()
        {
            return accessInfo;
        }

        public void setAccessInfo (AccessInfo accessInfo)
        {
            this.accessInfo = accessInfo;
        }

        public String getKind ()
        {
            return kind;
        }

        public void setKind (String kind)
        {
            this.kind = kind;
        }

        public class SearchInfo
        {
            private String textSnippet;

            public String getTextSnippet ()
            {
                return textSnippet;
            }

            public void setTextSnippet (String textSnippet)
            {
                this.textSnippet = textSnippet;
            }
        }

        public class AccessInfo
        {
            private String webReaderLink;

            private String textToSpeechPermission;

            private String publicDomain;

            private String viewability;

            private String accessViewStatus;

            private Pdf pdf;

            private Epub epub;

            private String embeddable;

            private String quoteSharingAllowed;

            private String country;

            public String getWebReaderLink ()
            {
                return webReaderLink;
            }

            public void setWebReaderLink (String webReaderLink)
            {
                this.webReaderLink = webReaderLink;
            }

            public String getTextToSpeechPermission ()
            {
                return textToSpeechPermission;
            }

            public void setTextToSpeechPermission (String textToSpeechPermission)
            {
                this.textToSpeechPermission = textToSpeechPermission;
            }

            public String getPublicDomain ()
            {
                return publicDomain;
            }

            public void setPublicDomain (String publicDomain)
            {
                this.publicDomain = publicDomain;
            }

            public String getViewability ()
            {
                return viewability;
            }

            public void setViewability (String viewability)
            {
                this.viewability = viewability;
            }

            public String getAccessViewStatus ()
            {
                return accessViewStatus;
            }

            public void setAccessViewStatus (String accessViewStatus)
            {
                this.accessViewStatus = accessViewStatus;
            }

            public Pdf getPdf ()
            {
                return pdf;
            }

            public void setPdf (Pdf pdf)
            {
                this.pdf = pdf;
            }

            public Epub getEpub ()
            {
                return epub;
            }

            public void setEpub (Epub epub)
            {
                this.epub = epub;
            }

            public String getEmbeddable ()
            {
                return embeddable;
            }

            public void setEmbeddable (String embeddable)
            {
                this.embeddable = embeddable;
            }

            public String getQuoteSharingAllowed ()
            {
                return quoteSharingAllowed;
            }

            public void setQuoteSharingAllowed (String quoteSharingAllowed)
            {
                this.quoteSharingAllowed = quoteSharingAllowed;
            }

            public String getCountry ()
            {
                return country;
            }

            public void setCountry (String country)
            {
                this.country = country;
            }

            public class Pdf
            {
                private String acsTokenLink;

                private String isAvailable;

                public String getAcsTokenLink ()
                {
                    return acsTokenLink;
                }

                public void setAcsTokenLink (String acsTokenLink)
                {
                    this.acsTokenLink = acsTokenLink;
                }

                public String getIsAvailable ()
                {
                    return isAvailable;
                }

                public void setIsAvailable (String isAvailable)
                {
                    this.isAvailable = isAvailable;
                }
            }

            public class Epub
            {
                private String acsTokenLink;

                private String isAvailable;

                public String getAcsTokenLink ()
                {
                    return acsTokenLink;
                }

                public void setAcsTokenLink (String acsTokenLink)
                {
                    this.acsTokenLink = acsTokenLink;
                }

                public String getIsAvailable ()
                {
                    return isAvailable;
                }

                public void setIsAvailable (String isAvailable)
                {
                    this.isAvailable = isAvailable;
                }
            }
        }

        public class SaleInfo
        {
            private RetailPrice retailPrice;

            private String saleability;

            private ListPrice listPrice;

            private Offers[] offers;

            private String buyLink;

            private String isEbook;

            private String country;

            public RetailPrice getRetailPrice ()
            {
                return retailPrice;
            }

            public void setRetailPrice (RetailPrice retailPrice)
            {
                this.retailPrice = retailPrice;
            }

            public String getSaleability ()
            {
                return saleability;
            }

            public void setSaleability (String saleability)
            {
                this.saleability = saleability;
            }

            public ListPrice getListPrice ()
            {
                return listPrice;
            }

            public void setListPrice (ListPrice listPrice)
            {
                this.listPrice = listPrice;
            }

            public Offers[] getOffers ()
            {
                return offers;
            }

            public void setOffers (Offers[] offers)
            {
                this.offers = offers;
            }

            public String getBuyLink ()
            {
                return buyLink;
            }

            public void setBuyLink (String buyLink)
            {
                this.buyLink = buyLink;
            }

            public String getIsEbook ()
            {
                return isEbook;
            }

            public void setIsEbook (String isEbook)
            {
                this.isEbook = isEbook;
            }

            public String getCountry ()
            {
                return country;
            }

            public void setCountry (String country)
            {
                this.country = country;
            }

            public class Offers
            {
                private RetailPrice retailPrice;

                private ListPrice listPrice;

                private String finskyOfferType;

                public RetailPrice getRetailPrice ()
                {
                    return retailPrice;
                }

                public void setRetailPrice (RetailPrice retailPrice)
                {
                    this.retailPrice = retailPrice;
                }

                public ListPrice getListPrice ()
                {
                    return listPrice;
                }

                public void setListPrice (ListPrice listPrice)
                {
                    this.listPrice = listPrice;
                }

                public String getFinskyOfferType ()
                {
                    return finskyOfferType;
                }

                public void setFinskyOfferType (String finskyOfferType)
                {
                    this.finskyOfferType = finskyOfferType;
                }
            }

            public class RetailPrice
            {
                private String amount;

                private String currencyCode;

                public String getAmount ()
                {
                    return amount;
                }

                public void setAmount (String amount)
                {
                    this.amount = amount;
                }

                public String getCurrencyCode ()
                {
                    return currencyCode;
                }

                public void setCurrencyCode (String currencyCode)
                {
                    this.currencyCode = currencyCode;
                }
            }

            public class ListPrice
            {
                private String amount;

                private String currencyCode;

                public String getAmount ()
                {
                    return amount;
                }

                public void setAmount (String amount)
                {
                    this.amount = amount;
                }

                public String getCurrencyCode ()
                {
                    return currencyCode;
                }

                public void setCurrencyCode (String currencyCode)
                {
                    this.currencyCode = currencyCode;
                }
            }
        }

        public class VolumeInfo
        {
            private String pageCount;

            private String averageRating;

            private ReadingModes readingModes;

            private String infoLink;

            private String printType;

            private String allowAnonLogging;

            private String publisher;

            private String[] authors;

            private String canonicalVolumeLink;

            private String title;

            private String previewLink;

            private String description;

            private String ratingsCount;

            private ImageLinks imageLinks;

            private String contentVersion;

            private String[] categories;

            private String language;

            private String publishedDate;

            private IndustryIdentifiers[] industryIdentifiers;

            private String maturityRating;

            public String getPageCount ()
            {
                return pageCount;
            }

            public void setPageCount (String pageCount)
            {
                this.pageCount = pageCount;
            }

            public String getAverageRating ()
            {
                return averageRating;
            }

            public void setAverageRating (String averageRating)
            {
                this.averageRating = averageRating;
            }

            public ReadingModes getReadingModes ()
            {
                return readingModes;
            }

            public void setReadingModes (ReadingModes readingModes)
            {
                this.readingModes = readingModes;
            }

            public String getInfoLink ()
            {
                return infoLink;
            }

            public void setInfoLink (String infoLink)
            {
                this.infoLink = infoLink;
            }

            public String getPrintType ()
            {
                return printType;
            }

            public void setPrintType (String printType)
            {
                this.printType = printType;
            }

            public String getAllowAnonLogging ()
            {
                return allowAnonLogging;
            }

            public void setAllowAnonLogging (String allowAnonLogging)
            {
                this.allowAnonLogging = allowAnonLogging;
            }

            public String getPublisher ()
            {
                return publisher;
            }

            public void setPublisher (String publisher)
            {
                this.publisher = publisher;
            }

            public String[] getAuthors ()
            {
                return authors;
            }

            public void setAuthors (String[] authors)
            {
                this.authors = authors;
            }

            public String getCanonicalVolumeLink ()
            {
                return canonicalVolumeLink;
            }

            public void setCanonicalVolumeLink (String canonicalVolumeLink)
            {
                this.canonicalVolumeLink = canonicalVolumeLink;
            }

            public String getTitle ()
            {
                return title;
            }

            public void setTitle (String title)
            {
                this.title = title;
            }

            public String getPreviewLink ()
            {
                return previewLink;
            }

            public void setPreviewLink (String previewLink)
            {
                this.previewLink = previewLink;
            }

            public String getDescription ()
            {
                return description;
            }

            public void setDescription (String description)
            {
                this.description = description;
            }

            public String getRatingsCount ()
            {
                return ratingsCount;
            }

            public void setRatingsCount (String ratingsCount)
            {
                this.ratingsCount = ratingsCount;
            }

            public ImageLinks getImageLinks ()
            {
                return imageLinks;
            }

            public void setImageLinks (ImageLinks imageLinks)
            {
                this.imageLinks = imageLinks;
            }

            public String getContentVersion ()
            {
                return contentVersion;
            }

            public void setContentVersion (String contentVersion)
            {
                this.contentVersion = contentVersion;
            }

            public String[] getCategories ()
            {
                return categories;
            }

            public void setCategories (String[] categories)
            {
                this.categories = categories;
            }

            public String getLanguage ()
            {
                return language;
            }

            public void setLanguage (String language)
            {
                this.language = language;
            }

            public String getPublishedDate ()
            {
                return publishedDate;
            }

            public void setPublishedDate (String publishedDate)
            {
                this.publishedDate = publishedDate;
            }

            public IndustryIdentifiers[] getIndustryIdentifiers ()
            {
                return industryIdentifiers;
            }

            public void setIndustryIdentifiers (IndustryIdentifiers[] industryIdentifiers)
            {
                this.industryIdentifiers = industryIdentifiers;
            }

            public String getMaturityRating ()
            {
                return maturityRating;
            }

            public void setMaturityRating (String maturityRating)
            {
                this.maturityRating = maturityRating;
            }

            public class ImageLinks
            {
                private String thumbnail;

                private String smallThumbnail;

                public String getThumbnail ()
                {
                    return thumbnail;
                }

                public void setThumbnail (String thumbnail)
                {
                    this.thumbnail = thumbnail;
                }

                public String getSmallThumbnail ()
                {
                    return smallThumbnail;
                }

                public void setSmallThumbnail (String smallThumbnail)
                {
                    this.smallThumbnail = smallThumbnail;
                }
            }

            public class ReadingModes
            {
                private String text;

                private String image;

                public String getText ()
                {
                    return text;
                }

                public void setText (String text)
                {
                    this.text = text;
                }

                public String getImage ()
                {
                    return image;
                }

                public void setImage (String image)
                {
                    this.image = image;
                }
            }

            public class IndustryIdentifiers
            {
                private String type;

                private String identifier;

                public String getType ()
                {
                    return type;
                }

                public void setType (String type)
                {
                    this.type = type;
                }

                public String getIdentifier ()
                {
                    return identifier;
                }

                public void setIdentifier (String identifier)
                {
                    this.identifier = identifier;
                }
            }
        }
    }
}

我不知道什么导致错误。除了创建一个名为fromJson的类或内部类之外,Android Studio并没有提出任何建议。 请帮忙。

1 个答案:

答案 0 :(得分:0)

更改以下行:

BookInfoModel bookInfoModel = new gson.fromJson(finalObject.toString(),BookInfoModel.class);

BookInfoModel bookInfoModel = gson.fromJson(finalObject.toString(), BookInfoModel.class);
  

以下是如何使用Gson的简单示例:

Gson gson = new Gson();

// JSON to Java object, read it from a Json String.
String jsonInString = "{'name' : 'dummyName'}";
Staff staff = gson.fromJson(jsonInString, Staff.class);

以下是示例类:

public class Staff {
    private String name;
}