Gson return object Как разобрать?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Gson return object Как разобрать?

Сообщение Anonymous »

Мой веб -API возвращает объект, а не массив ... < /p>

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);

}

}
my showproductdetails.class (основной файл - активность)

Подробнее здесь: https://stackoverflow.com/questions/471 ... w-to-parse
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»