尝试在 android studio 的列表视图中显示解析的 JSON 对象

如何解决尝试在 android studio 的列表视图中显示解析的 JSON 对象

我正在尝试显示从 URI 中获取的已解析 JSON 对象,并在 Android 应用程序中以列表样式格式显示它。

我可以在 toString() 中独立地显示模型中对象的属性,但目的是让这些属性中的每一个都以列出的样式显示

我正在使用 Volley 来尝试做到这一点。

在 MainActivity - 带有 onResponse 的 callService 函数

 public void callService(View v)
    {
        // get TextView for displaying result
        final TextView outputTextView = (TextView) findViewById(R.id.outputTextView);

        try
        {
            // make a string request (JSON request an alternative)
            RequestQueue queue = Volley.newRequestQueue(this);
            Log.d(TAG,"Making request");
            try
            {
                StringRequest strObjRequest = new StringRequest(Request.Method.POST,SERVICE_URI,new Response.Listener<String>()
                        {
                            @Override
                            public void onResponse(String response)
                            {
                                // parse resulting string containing JSON to Greeting object

                                Type listType = new Typetoken<List<Model>>() {}.getType();
                                List<Model> yourList = new Gson().fromJson(response.toString(),listType);


                                // This displays the toString()

                               // Model model = new Gson().fromJson(response,Model.class);
                              //  outputTextView.setText(model.toString());
                              //  Log.d(TAG,"displaying data" + model.toString());

                                Customlistadapter adapter = new Customlistadapter(this,yourList);
                                ListView listView = (ListView) findViewById(R.id.list);
                                listView.setAdapter(adapter);
                            }
                        },new Response.ErrorListener()
                        {
                            @Override
                            public void onErrorResponse(VolleyError error)
                            {
                                outputTextView.setText(error.toString());
                                Log.d(TAG,"Error" + error.toString());
                            }
                        });
                queue.add(strObjRequest);           // can have multiple in a queue,and can cancel
            }
            catch (Exception e1)
            {
                Log.d(TAG,e1.toString());
                outputTextView.setText(e1.toString());
            }
        }
        catch (Exception e2)
        {
            Log.d(TAG,e2.toString());
            outputTextView.setText(e2.toString());
        }
    }

型号:

package com.example.albumtrackr;

// MODEL CLASS - NAME WILL BE CHANGED
public class Model
{
    private Integer id;
    private String artist;
    private String name;
    private String thumbnail;
    private Object lists;

    public String toString()
    {
        return "Artist Name: " + artist + "/n" + "Album Name: " + name;
    }
}

JSON 对象:

enter image description here

还有 logcat 错误

2021-03-24 21:31:57.762 31733-31733/com.example.albumtrackr E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.albumtrackr,PID: 31733
    com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $
        at com.google.gson.Gson.fromJson(Gson.java:939)
        at com.google.gson.Gson.fromJson(Gson.java:892)
        at com.google.gson.Gson.fromJson(Gson.java:841)
        at com.example.albumtrackr.MainActivity$2.onResponse(MainActivity.java:96)
        at com.example.albumtrackr.MainActivity$2.onResponse(MainActivity.java:89)
        at com.android.volley.toolBox.StringRequest.deliverResponse(StringRequest.java:82)
        at com.android.volley.toolBox.StringRequest.deliverResponse(StringRequest.java:29)
        at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:102)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
     Caused by: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $
        at com.google.gson.stream.JsonReader.beginArray(JsonReader.java:350)
        at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:80)
        at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:61)
        at com.google.gson.Gson.fromJson(Gson.java:927)
        at com.google.gson.Gson.fromJson(Gson.java:892) 
        at com.google.gson.Gson.fromJson(Gson.java:841) 
        at com.example.albumtrackr.MainActivity$2.onResponse(MainActivity.java:96) 
        at com.example.albumtrackr.MainActivity$2.onResponse(MainActivity.java:89) 
        at com.android.volley.toolBox.StringRequest.deliverResponse(StringRequest.java:82) 
        at com.android.volley.toolBox.StringRequest.deliverResponse(StringRequest.java:29) 
        at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:102) 
        at android.os.Handler.handleCallback(Handler.java:883) 
        at android.os.Handler.dispatchMessage(Handler.java:100) 
        at android.os.Looper.loop(Looper.java:214) 
        at android.app.ActivityThread.main(ActivityThread.java:7356) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 

我觉得这个错误可能与它目前只有一个对象有关。

我对 android 开发很陌生,任何帮助将不胜感激!

谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?