2017-09-19 2 views
0

こんにちは私はここで少し問題があります。

com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:ライン2305パス $ .items [0] .author

彼らが言う1列でBEGIN_OBJECT は、文字列を期待していたが

loadRSSAsync.execute("http://primariagarleni.ro/category/uncategorized/feed/json"); 
:エラーは、私はこのURLからJSONを取得し、ここで

rssObject = new Gson().fromJson(s,RSSObject.class); 

です0

私はこのスクリプトを使って、私のwordpressからjsonの情報を取得しました。

private void loadRSS() { 
     AsyncTask<String,String,String> loadRSSAsync = new AsyncTask<String, String, String>() { 

      ProgressDialog mDialog = new ProgressDialog(MainActivity.this); 

      @Override 
      protected void onPreExecute() { 
       mDialog.setMessage("Asteptati..."); 
       //mDialog.show(); 
      } 

      @Override 
      protected String doInBackground(String... params) { 
       String result; 
       HTTPDataHandler http = new HTTPDataHandler(); 
       result = http.GetHTTPData(params[0]); 
       Log.v(TAG, "result=" + result); 
       Log.v(TAG, "result=" + result); 
       return result; 
      } 

      @Override 
      protected void onPostExecute(String s) { 
       mDialog.dismiss(); 
       rssObject = new Gson().fromJson(s,RSSObject.class); 

       FeedAdapter adapter = new FeedAdapter(rssObject,getBaseContext()); 
       recyclerView.setAdapter(adapter); 
       adapter.notifyDataSetChanged(); 
      } 
     }; 
     String RSS_to_Json_API = "https://api.rss2json.com/v1/api.json?rss_url="; 
     StringBuilder url_get_data = new StringBuilder(RSS_to_Json_API); 
     String RSS_link; 
     RSS_link = "http://primariagarleni.ro/category/uncategorized/feed/atom"; 
     url_get_data.append(RSS_link); 
     loadRSSAsync.execute("http://primariagarleni.ro/category/uncategorized/feed/json"); 

} 

この文字列RSS_to_Json_API = "https://api.rss2json.com/v1/api.json?rss_url=";:ここ

はinfromationsを返す関数であります古い方法でしたが、時間通りにコンテンツを更新しないため、うまく機能しません。

RSSObjectクラス

パッケージcom.gireada.garleni;

/* 
* Created by Gireada on 8/24/2017. 
*/ 

import java.util.List; 


public class RSSObject 
{ 
    public String status; 
    public Feed feed; 
    public List<Item> items; 

    public RSSObject(String status, Feed feed, List<Item> items) { 
     this.status = status; 
     this.feed = feed; 
     this.items = items; 
    } 

    public String getStatus() { 
     return status; 
    } 

    public void setStatus(String status) { 
     this.status = status; 
    } 

    public Feed getFeed() { 
     return feed; 
    } 

    public void setFeed(Feed feed) { 
     this.feed = feed; 
    } 

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

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

Item.class

package com.gireada.garleni; 

/* 
* Created by Gireada on 8/24/2017. 
*/ 

import java.util.List; 

public class Item 
{ 
    public String title; 
    public String pubDate; 
    public String link; 
    public String guid; 
    public String author; 
    public String thumbnail; 
    public String description; 
    public String content; 
    public Object enclosure; 
    public List<String> categories; 

    public Item(String title, String pubDate, String link, String guid, String author, String thumbnail, String description, String content, Object enclosure, List<String> categories) { 
     this.title = title; 
     this.pubDate = pubDate; 
     this.link = link; 
     this.guid = guid; 
     this.author = author; 
     this.thumbnail = thumbnail; 
     this.description = description; 
     this.content = content; 
     this.enclosure = enclosure; 
     this.categories = categories; 
    } 

    public String getTitle() { 
     return title; 
    } 

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

    public String getPubDate() { 
     return pubDate; 
    } 

    public void setPubDate(String pubDate) { 
     this.pubDate = pubDate; 
    } 

    public String getLink() { 
     return link; 
    } 

    public void setLink(String link) { 
     this.link = link; 
    } 

    public String getGuid() { 
     return guid; 
    } 

    public void setGuid(String guid) { 
     this.guid = guid; 
    } 

    public String getAuthor() { 
     return author; 
    } 

    public void setAuthor(String author) { 
     this.author = author; 
    } 

    public String getThumbnail() { 
     return thumbnail; 
    } 

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

    public String getDescription() { 
     return description; 
    } 

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

    public String getContent() { 
     return content; 
    } 

    public void setContent(String content) { 
     this.content = content; 
    } 

    public Object getEnclosure() { 
     return enclosure; 
    } 

    public void setEnclosure(Object enclosure) { 
     this.enclosure = enclosure; 
    } 

    public List<String> getCategories() { 
     return categories; 
    } 

    public void setCategories(List<String> categories) { 
     this.categories = categories; 
    } 
} 
+0

'author'はJSONArrayの代わりにJSONObjectです –

+1

もっと情報が必要です。 "s"変数とは何ですか? RSSObjectクラスとは何ですか? – Hetfieldan24

+0

こんにちは、変数はAsyncTaskから返されます、私は自分の投稿を編集します。 – Gireada

答えて

2

@Luca Nicolettiが指摘したようにだけ、あなたはそれがAPI応答で実際にJSONObjectあるときに、文字列としてitem.author使用しています。

名前のフィールドを持つクラスに著者を変更しても問題ありません。

関連する問題