【发布时间】:2019-11-25 23:39:32
【问题描述】:
我正在从 URl 解析 json 数据,但它以“/”开头。 我有一个数据类,它是应用程序中的 POJO 类。 这是我的 json 文件。
/{
"data": [
{
"id": "1",
"text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
},
{
"id": "2",
"text": "Felis donec et odio pellentesque diam volutpat commodo sed. Non arcu risus quis varius quam quisque. Nibh nisl condimentum id venenatis a condimentum vitae. Vel pharetra vel turpis nunc eget. "
},
{
"id": "3",
"text": "Volutpat sed cras ornare arcu dui vivamus arcu felis bibendum. Lobortis mattis aliquam faucibus purus in. Aliquam sem fringilla ut morbi tincidunt augue interdum."
}
]
}
这是我的安卓代码。
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, urlJsonObj, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Toast.makeText(MainActivity.this, response.toString(), Toast.LENGTH_SHORT).show();
try {
Toast.makeText(MainActivity.this, "Here", Toast.LENGTH_SHORT).show();
Gson gson = new Gson();
JSONObject data1 = response.getJSONObject("data");
data = gson.fromJson(data1.toString(), Data.class);
}
catch (JSONException e){
Toast.makeText(MainActivity.this, "Error : "+ e.getMessage(), Toast.LENGTH_SHORT).show();
}
dataList.add(data);
mAdapter = new ViewPagerAdapter(dataList,layoutInflater, viewPager2);
progressBar.setVisibility(View.GONE);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(MainActivity.this, error.getMessage(), Toast.LENGTH_SHORT).show();
progressBar.setVisibility(View.GONE);
}
});
requestQueue.add(jsonObjectRequest);
我收到错误消息“字符 0 处的预期文字值。
【问题讨论】:
-
那不是 JSON。如果您知道从字符 1 到结尾的所有内容 是 有效 JSON,则只需在解析前取
.substring(1)。 -
我将此 JSON 文件解析为 JsonObject。在解析之前我应该把 .substring(1) 放在哪里?
-
你不能。
JsonObjectRequest假设您实际上正在获取 JSON。您必须创建一个StringRequest,从响应中获取一个字符串,将其子串化,然后自己解析它。在这样的事情上指向JsonObjectRequest是残忍的,就像给一个无家可归的人罐装金枪鱼然后想知道他为什么不吃东西。 :P -
你是对的。明白了,谢谢
标签: android json gson android-volley