使用gson的stackoverflow错误

时间:2016-05-28 19:27:49

标签: android gson

我正在尝试获取感兴趣的地方并启用APIS是“google maps android API& google places API”。当我使用API​​_Key在网络浏览器中发布网址时。

错误讯息:
 “此IP,站点或移动应用程序无权使用此API密钥。请求从IP地址212.241.70.124收到,请求空引用”。

第二件事,当我运行此代码然后我得到错误: “java.lang.StackOverflowError:堆栈大小1036KB gson”。 请让我知道我做错了什么?我真的很感谢你!

Java代码:

   public class FoodFragment extends Fragment {

private SupportMapFragment mapfragment;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View view= inflater.inflate(R.layout.food_layout, null);

    // I am getting Map here and it's okay. 
    googlemap();

    PostFetcher postfetcher=new PostFetcher();
    postfetcher.execute();

    return view;
    }



     private class PostFetcher extends AsyncTask<Void,Void,String>{

    private static final String TAG = "PostFetcher";
    public static final String SERVER_URL = " https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670522,151.1957362&radius=50&type=restaurant&name=cruise&key=My APi key here";


    @Override
    protected String doInBackground(Void... params) {

        try {

            Gson gson = new GsonBuilder().create();
            FoodFragment jsondata = gson.fromJson(SERVER_URL, FoodFragment.class);

            System.out.println("data="+jsondata);

        } catch (Exception ex) {
            Log.e(TAG, "Failed to parse JSON due to: " + ex);
        }
        return null;
    }


}

}

1 个答案:

答案 0 :(得分:0)

FoodFragment jsondata = gson.fromJson(SERVER_URL, FoodFragment.class);

FoodFragment.class是当前类文件的名称,而不是JSON表示的Java对象。第二个参数必须是POJO,第一个是JSON字符串,而不是URL。

看起来您需要先发出HTTP请求,然后才能执行

MapData map = gson.fromJson(serverResponse, MapData.class);

当然,创建MapData课程之后。

相关问题