簡體   English   中英

字符串無法從android中的服務器轉換為JSONObject

[英]String cannot be converted to JSONObject from server in android

所以這是我的代碼,我試圖從服務器獲取數據並在listview中顯示,因此在控制台窗口中出現“無法將字符串轉換為JSONObject”錯誤。 因此,請任何人都可以給我答案。

Attenence.java

package com.example.pranav.attendence;

public class attendance
{
        public String name;
        public void setName(String name)
        {
            this.name = name;
        }
        public String getName()
        {
            return name;
        }
}

AttendanceAdapter.java

package com.example.pranav.attendence;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.ArrayList;

public class AttendanceAdapter extends BaseAdapter
{
    public final MainActivity mainActivity;
    public final ArrayList<attendance> studentlist;
    attendance attendance;
    public AttendanceAdapter(MainActivity mainActivity, ArrayList<attendance> studentlist)
    {
        this.mainActivity = mainActivity;
        this.studentlist = studentlist;
    }
    @Override
    public int getCount()
    {
        return studentlist.size();
    }
    @Override
    public Object getItem(int i)
    {
        return studentlist.get(i);
    }
    @Override
    public long getItemId(int i)
    {
        return i;
    }
    @Override
    public View getView(int i, View view, ViewGroup viewGroup)
    {
        View row=view;
        AttendanceAdapter.SubjectHolder holder=null;
        if(row==null)
        {
            LayoutInflater inflater=LayoutInflater.from(mainActivity);
            row=inflater.inflate(R.layout.list_item,viewGroup,false);
            holder = new AttendanceAdapter.SubjectHolder();
            holder.nametv= (TextView) row.findViewById(R.id.name);
            row.setTag(holder);
        }
        else
        {
            holder= (AttendanceAdapter.SubjectHolder) row.getTag();
        }

        attendance stud=studentlist.get(i);
        holder.nametv.setText(attendance.getName());
        return row;
    }
    class SubjectHolder
    {
        TextView nametv;
    }
}

MainActivity.java

package com.example.pranav.attendence;

import android.app.ProgressDialog;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;

public class MainActivity extends AppCompatActivity
{
    ListView playerListView;
    ArrayList<attendance> playerList = new ArrayList<attendance>();
    attendance attendance;
    AttendanceAdapter playerAdapter;
    ProgressDialog dialog;
    String TAG=null;
    String name;
    String URL="https://pranavpatel428.000webhostapp.com/image/myphp/demo.php";
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        playerListView=(ListView)findViewById(R.id.listview);
        dialog = new ProgressDialog(this);
        getSubject();
        playerListView.setAdapter(playerAdapter);
        playerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            attendance player=playerList.get(i);
        }
    });
    }
    private void getSubject()
    {
        dialog.setMessage("Fetching Subject... Please Wait");
        dialog.show();
        StringRequest stringRequest = new StringRequest(Request.Method.GET, URL, new Response.Listener<String>()
        {
            @Override
            public void onResponse(String response) 
            {
                dialog.dismiss();
                try {
                        JSONObject obj = new JSONObject(response);
                        JSONArray jsonArray = obj.getJSONArray("data");
                        for(int i=0;i<jsonArray.length();i++){
                            //Declaring a json object corresponding to every pdf object in our json Array
                            JSONObject jsonObject = jsonArray.getJSONObject(i);
                            //Declaring a Pdf object to add it to the ArrayList  pdfList
                            name = jsonObject.getString("name");
                        }
                        attendance = new attendance();
                        attendance.setName(name);
                        playerList.add(attendance);
                        playerAdapter=new AttendanceAdapter(MainActivity.this,playerList);
                        playerListView.setAdapter(playerAdapter);
                        playerAdapter.notifyDataSetChanged();
                      } catch (JSONException e) {
                            e.printStackTrace();
                            Toast.makeText(MainActivity.this, "" + e, Toast.LENGTH_SHORT).show();
                    }
                }
            },
                new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
        }
    });
    RequestQueue request = Volley.newRequestQueue(this);
    request.add(stringRequest);
    }
} 

 Output

我收到這種類型的錯誤,而不是來自服務器的列表。

您的回應不是有效的json。

成功{“ data”:[{“ name”:“ Pranav”},{“ name”:“ Parth”},{“ name”:“ Kaushil”},{“ name”:“ Falak”},{“ name “:” Mitesh“},{” name“:” Krishna“},{” name“:” Nilam“},{” name“:” Jui“},{” name“:” Runee“},{” name “:” Kishan“}],”成功“:1,”消息“:”找到條目“}

您應該從服務器端的響應中刪除“成功”字符串,這將使其成為有效的json。

要檢查JSON字符串的有效性,您可以嘗試https://jsonlint.com/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM