jsonsyntaxexexception: java.lang.illegalstateexception: ожидаемый begin_array, но был начал />
Код: Выделить всё
private List
product;
public List getProduct() {
return product;
}
< /code>
Это не работает! < /p>
Следующий код работает, но он получает объект, такой как «key = value, key = value, key = value" < /code>
, поэтому я не могу извлечь даты из объекта ... < /p>
public Object getProduct() {
if( product instanceof Map ) {
Map map = (Map)product;
String title = (String)map.get("title");
String image = (String)map.get("featured_src");
Log.e("TESTLOG",title.toString());
}
< /code>
Вот мой продукт ledetailssimple.java < /p>
public class ProductDetailsSimple {
private String id;
private String title;
private String created_at;
public String getId() {
return id;
}
public String getName() {
return title;
}
public String getImage() {
return created_at;
}
Также я могу принести объект, но я не могу проанализировать значения объекта по ключам ...
Как это сделать?
Код: Выделить всё
package com.learn2crack.listviewjson;
import android.os.AsyncTask;
import android.util.Log;
import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
import com.learn2crack.listviewjson.model.ResponseProduct;
import com.learn2crack.listviewjson.model.ProductDetails;
import org.json.JSONArray;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
/**
* Created by Michael on 21.10.2017.
*/
public class LoadJSONTaskProduct extends AsyncTask {
public LoadJSONTaskProduct(com.learn2crack.listviewjson.LoadJSONTaskProduct.Listener listener) {
mListener = listener;
}
public interface Listener {
void onLoaded(Object product);
void onError();
}
private com.learn2crack.listviewjson.LoadJSONTaskProduct.Listener mListener;
@Override
protected ResponseProduct doInBackground(String... strings) {
try {
String stringResponse =loadJSON(strings[0]);
Gson gson = new Gson();
Log.e("TESTLOGTaskProd2",stringResponse);
return gson.fromJson(stringResponse, ResponseProduct.class);
} catch (IOException e) {
e.printStackTrace();
return null;
} catch (JsonSyntaxException e) {
e.printStackTrace();
return null;
}
}
@Override
protected void onPostExecute(ResponseProduct response) {
if (response != null) {
mListener.onLoaded(response.getProduct());
} else {
mListener.onError();
}
}
private String loadJSON(String jsonURL) throws IOException {
URL url = new URL(jsonURL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(10000);
conn.setConnectTimeout(15000);
conn.setRequestMethod("GET");
conn.setDoInput(true);
conn.connect();
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
Log.e("TESTLOG11",in.toString());
String line;
StringBuilder response = new StringBuilder();
Log.e("TESTLOG22",response.toString());
while ((line = in.readLine()) != null) {
response.append(line);
}
in.close();
Log.e("TESTLOG23",response.toString());
return response.toString();
}
}
< /code>
my loadjsontaskproduct.java < /p>
package com.learn2crack.listviewjson;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import com.learn2crack.listviewjson.model.ProductDetails;
import org.json.JSONArray;
import org.json.JSONObject;
import java.lang.reflect.Array;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
public class ShowProductDetails extends AppCompatActivity implements LoadJSONTaskProduct.Listener, AdapterView.OnItemClickListener{
private ListView mListView;
Object product;
//http://copy-cat.at/api/index.php?act=getProduct&product_id=
//public static final String URL = "http://copy-cat.at/api/index.php?act=getProduct&product_id=118";
private List mProductMapList = new ArrayList();
private static final String KEY_VER = "id";
private static final String KEY_TITLE = "title";
private static final String KEY_API = "permalink";
private static final String KEY_SRC = "src";
private static final String KEY_REGPRICE = "regular_price";
private static final String KEY_PRICE = "price";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_product_details);
String productid = getIntent().getStringExtra("productid");
mListView = (ListView) findViewById(R.id.list_view);
Log.e("TESTLOGPRODUCT", productid);
//http://copy-cat.at/api/index.php?act=getProduct&product_id=
String URLRequest = "http://copy-cat.at/api/index.php?act=getProduct&product_id="+productid;
new LoadJSONTaskProduct(this).execute(URLRequest);
}
@Override
public void onLoaded(Object product ) {
//Log.e("TESTLOGPRODUCT2", product.toString());
HashMap map = new HashMap();
String splittString = product.toString();
String[] split = splittString.split(",",-1);
Log.e("TESTLOGPRODUCT2", split.toString());
/** JSONArray json;
Object myjson = new JSONObject(product);
JSONArray the_json_array = myjson.getJSONArray("profiles");
json = product;
List list = new ArrayList();
JSONArray array = json.getJSONArray("interests");
for(int i = 0 ; i < array.length() ; i++){
list.add(array.getJSONObject(i).getString("interestKey"));
}
map.put(KEY_VER, product.toString());
// map.put(KEY_TITLE, product.getTitle());
mProductMapList.add(map);
**/
loadListView();
}
@Override
public void onError() {
Toast.makeText(this, "Error !", Toast.LENGTH_SHORT).show();
}
@Override
public void onItemClick(AdapterView adapterView, View view, int i, long l) {
Toast.makeText(this, mProductMapList.get(i).get(KEY_TITLE),Toast.LENGTH_LONG).show();
//ShowProduct.getProduct(this);
}
private void loadListView() {
ListAdapter adapter = new SimpleAdapter(ShowProductDetails.this, mProductMapList, R.layout.content_show_product_details,
new String[] { KEY_VER},
new int[] { R.id.id});
mListView.setAdapter(adapter);
}
}
Подробнее здесь: https://stackoverflow.com/questions/471 ... w-to-parse