Десериализация веб-сервиса JSON в Android - PullRequest
0 голосов
/ 28 марта 2012

Я пытаюсь десериализовать этот массив JSON в мой проект Android.

[{"Name":"Ban","Price":1},{"Name":"Banana","Price":1},{"Name":"chicken","Price":14},{"Name":"pizza","Price":16},{"Name":"slice","Price":1}]

Я сделал этот веб-сервис в Asp.net. Код, который я использую для десериализации, находится ниже

public void onClick(View v)
{
    String url="http://192.168.15.2/MyAndroid/InputCaller.aspx"; //do not use localhost
    String response=callWebService(url);

    List<Items> mObjectList =  new ArrayList<Items>() ;
    ItemsList list = null;
    Gson gson = new Gson();
    list = gson.fromJson(response, ItemsList.class);
    // list = getItemsList(response);
    Intent myIntent = new Intent(v.getContext(), Cart.class);
    startActivity(myIntent);    
}

public final ItemsList getItemsList (String jsonString)
{
    ItemsList il = null;
    Gson gson = new Gson();
    il = gson.fromJson(jsonString, ItemsList.class);
    return il;
}

public class ItemsList
{
    private List<ItemsContainer> items = new ArrayList<ItemsContainer>();

    public List<ItemsContainer> getItemsContainerList()
    {
        return items;
    }
}

class ItemsContainer
{
    Items items;
    public Items getItem()
    {
        return items;
    }
}

public class Items
{
    String Name;
    int Price;
}

Это не работает, и когда я пытаюсь его отладить, я получаю это сообщение в list = gson.fromJson (response, ItemsList.class); Gson.class Источник не найден. Это моя первая программа десериализации, и я был бы очень признателен, если бы кто-нибудь помог мне с этим. Спасибо,

1 Ответ

1 голос
/ 28 марта 2012

Не усложняйте использование дополнительных родительских классов (в качестве контейнера) для Items class. Просто удалите сериализацию всех элементов в объект List , используя Gson, как показано ниже:

List<Items> listItems = (List<Items>) gson.fromJson(response,
                                       new TypeToken<List<Items>>(){}.getType());

теперь у вас есть все элементы списка: listItems

...