2017-09-03 2 views
0

J'essaie de résoudre cette erreur mais je ne peux pas.utiliser Jsonreader setLenient (true) pour accepter l'erreur JSON malformée

code d'activité principale

public class Reservation_main extends AppCompatActivity { 
final String TAG = "ReservationMainActivity"; 
public static final String url = "http://10.0.2.2:81/PhpProject1/room.php"; 
RecyclerView recycle; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_reserve_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    recycle = (RecyclerView)findViewById(R.id.recycle); 
    recycle.setHasFixedSize(true); 

    LinearLayoutManager manager = new LinearLayoutManager(this); 

    recycle.setLayoutManager(manager); 

    StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
        Log.d(TAG, response); 

        ArrayList<Reservation_room_list> roomList = new JsonConverter<Reservation_room_list>() 
          .toArrayList(response, Reservation_room_list.class); 

        Reservation_room_adapter adapter = new Reservation_room_adapter(getApplicationContext(), roomList); 

        recycle.setAdapter(adapter); 

       } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        if(error != null){ 
         Log.d(TAG, error.toString()); 
         Toast.makeText(getApplicationContext(), "Something went wrong.", Toast.LENGTH_LONG).show(); 
        } 
       } 
      } 
    ); 

    MySingleton.getInstance(getApplicationContext()).addToRequestQueue(stringRequest); 


} 
} 

adaptateur Chambre

public class Reservation_room_adapter extends 
RecyclerView.Adapter<Reservation_room_adapter.RoomViewHolder> { 

private Context context; 
private ArrayList<Reservation_room_list> room; 

public Reservation_room_adapter(Context context, ArrayList<Reservation_room_list> room){ 
    this.context = context; 
    this.room = room; 
} 

@Override 
public RoomViewHolder onCreateViewHolder (ViewGroup parent, int type){ 
    LayoutInflater inflater = LayoutInflater.from(parent.getContext()); 
    View view = inflater.from(parent.getContext()) 
      .inflate(R.layout.activity_reserve_layout, parent, false); 

    RoomViewHolder roomViewHolder = new RoomViewHolder(view); 
    return roomViewHolder; 
} 

@Override 
public void onBindViewHolder (RoomViewHolder holder, int position){ 
    Reservation_room_list rooms = room.get(position); 
    holder.roomNo.setText(rooms.roomid); 
    holder.price.setText("" + rooms.price); 
    holder.roomDescription.setText(rooms.type); 

    String fullUrl = "http://10.0.2.2:81/PhpProject1/" + rooms.image; 

    Picasso.with(context) 
      .load(fullUrl) 
      .placeholder(R.drawable.bed_room_web) 
      .error(android.R.drawable.stat_notify_error) 
      .into(holder.roomImage); 
} 

@Override 
public int getItemCount(){ 
    if (room != null){ 
     return room.size(); 
    } 
    return 0; 
} 

public static class RoomViewHolder extends RecyclerView.ViewHolder{ 
    public CardView info; 
    public TextView roomNo; 
    public TextView roomDescription; 
    public TextView price; 
    public ImageView roomImage; 

    public RoomViewHolder(View roomView){ 
     super(roomView); 
     info = (CardView) roomView.findViewById(R.id.view); 
     roomNo = (TextView) roomView.findViewById(R.id.room); 
     roomDescription = (TextView) roomView.findViewById(R.id.details); 
     price = (TextView) roomView.findViewById(R.id.price); 
     roomImage = (ImageView) roomView.findViewById(R.id.imageView2); 
    } 
} 

} 

Ce code est le room_list

public class Reservation_room_list implements Serializable{ 
public String type; 
public String image; 
public String status; 
public int roomid; 
public int capacity; 
public double price; 
} 

code php

<?php 
error_reporting(0); 
    require 'index.php'; 

$query = "SELECT * FROM `room` WHERE Status = 'available' ORDER BY 
    Room_number desc"; 
    $response["sucsess"] = false; 

$result = mysqli_query($conn, $query); 

while($row = mysqli_fetch_assoc($result)){ 
    $response["success"] = true; 
     $data[] = $row; 
} 

echo json_encode($data); 

?> 

code MySingleton

public class MySingleton { 
private static MySingleton mInstance; 
private RequestQueue mRequestQueue; 
private ImageLoader mImageLoader; 
private static Context mCtx; 

private MySingleton(Context context) { 
    mCtx = context; 
    mRequestQueue = getRequestQueue(); 

    mImageLoader = new ImageLoader(mRequestQueue, 
      new ImageLoader.ImageCache() { 
       private final LruCache<String, Bitmap> 
         cache = new LruCache<String, Bitmap>(20); 

       @Override 
       public Bitmap getBitmap(String url) { 
        return cache.get(url); 
       } 

       @Override 
       public void putBitmap(String url, Bitmap bitmap) { 
        cache.put(url, bitmap); 
       } 
      }); 
} 

public static synchronized MySingleton getInstance(Context context) { 
    if (mInstance == null) { 
     mInstance = new MySingleton(context); 
    } 
    return mInstance; 
} 

public RequestQueue getRequestQueue() { 
    if (mRequestQueue == null) { 
     mRequestQueue = 
    Volley.newRequestQueue(mCtx.getApplicationContext()); 
    } 
    return mRequestQueue; 
} 

public <T> void addToRequestQueue(Request<T> req) { 
    getRequestQueue().add(req); 
} 

public ImageLoader getImageLoader() { 
    return mImageLoader; 
} 
} 

erreur que je reçois quand exécuter

09-03 07: 45: 34,436 6020-6020/fyp.hotelreservationsystemver2 E/RecyclerView: Aucun adaptateur attaché; Sauter la disposition 09-03 07: 45: 34.465 6020-6020/fyp.hotelreservationsystemver2 D/ReservationMainActivity: [{"Room_number": "1", "Type": "luxe", "Capacité": "10", "Statut ":" disponible "," Prix ":" 1000 "," Image ":" img/hotel-chambre-decor-hotel-style-chambres.jpg "}]/* * Pour modifier cet en-tête de licence, choisissez En-têtes de licence dans les propriétés du projet. * Pour modifier ce fichier modèle, choisissez Outils | Modèles * et ouvrez le modèle dans l'éditeur. */ 09-03 07: 45: 34.504 6020-6020/fyp.hotelreservationsystemver2 D/AndroidRuntime: Arrêt de la machine virtuelle 09-03 07: 45: 34.504 6020-6020/fyp.hotelreservationsystemver2 E/AndroidRuntime: FATAL EXCEPTION: principale Processus: fyp.hotelreservationsystemver2, PID: 6020 com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: utilisez JsonReader.setLenient (true) pour accepter un JSON mal formé à la ligne 2 colonne 151 at com.google .gson.Gson.assertFullConsumption (Gson.java:779) at com.google.gson.Gson.fromJson (Gson.java:769) à l'adresse com.google.gson.Gson.fromJson (Gson.java:717) à com.kosalgeek.android.json.JsonConverter.toArrayList (JsonConverter.java:42) à fyp.hotelreservationsystemver2.Reservation_main $ 1.onResponse (Reservation_main.java:53) à fyp.hotelreservationsystemver2.Reservation_main $ 1.onResponse (Reservation_main.java : 44) à com.android.volley.toolbox.StringRequest.deliverResponse (StringRequest.java:60) à com.android.volley.toolbox.StringRequest.deliverResponse (StringRequest.java:30) à com.android.volley .ExecutorDelivery $ ResponseDeliveryRunnable.run (ExecutorDelivery.java:99) chez android.os.Handler.handleCallback (Handler.java:751) at android.os.Handler.dispatchMessage (Handler.java:95) à android.os.Looper.loop (Looper.java:154) à android.app.ActivityThread.main (ActivityThread.java:6077) à java.lang.reflect.Method.invoke (méthode native) à com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:866) à com.android.internal.os.ZygoteInit.main (ZygoteInit.java: 756) causés par: com.google.gson.stream.MalformedJsonException: Utilisation JsonReader.setLenient (true) pour accepter malformés JSON à la colonne 2 ligne à 151 com.google.gson.stream.JsonReader.syntaxError (JsonReader. java: 1505) à com.google.gson.stream.JsonReader.checkLenient (JsonReader.java:1386) à com.google.gson.stream.JsonReader.nextNonWhitespace (JsonReader.java:1336) à com.google. gson.stream.JsonReader.doPeek (JsonReader.java:527) à com.google.gson.stream.JsonReader.peek (JsonReader.java:414) à com.google.gson.Gson.assertFullConsumption (Gson.java: 775) à com.google.gson.Gso n.fromJson (Gson.java:769) à com.google.gson.Gson.fromJson (Gson.java:717) à com.kosalgeek.android.json.JsonConverter.toArrayList (JsonConverter.java:42) à fyp.hotelreservationsystemver2.Reservation_main $ 1.onResponse (Reservation_main.java:53) à fyp.hotelreservationsystemver2.Reservation_main $ 1.onResponse (Reservation_main.java:44) à com.android.volley.toolbox.StringRequest.deliverResponse (StringRequest.java: 60) à com.android.volley.toolbox.StringRequest.deliverResponse (StringRequest.java:30) à com.android.volley.ExecutorDelivery $ ResponseDeliveryRunnable.run (ExecutorDelivery.java:99) à android.os.Handler.handleCallback (Handler.java:751) à android.os.Handler.dispatchMessage (Handler.java:95) à android.os.Looper.loop (Looper.java:154) à android.app.ActivityThread.main (ActivityThread.java:6077) à java.lang.reflect.Method.invoke (native Method) à com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:866) à com.android.internal.os.ZygoteInit.main (ZygoteInit.java:756)

Le gson et JSONconverter I utilisation:

[1]: https://drive.google.com/open?id=0B9c7Ta0Lo2OVVkkyU1RJVzQ5bTQ 
+0

votre chaîne de publier JSON –

+0

je suggère à 1) ouvrir le navigateur Web et allez à la page room.php 2) Réglage du taux de réponse que la TextView et juste regarder. Si cela ressemble à JSON, analyser alors il –

Répondre

0

[{ "Room_number": "1", "Type", "luxe", "capacité": "10", "Status", "disponible", "Prix": "1000" "image": "img/hôtel-chambre-décoration-hôtel-style bedrooms.jpg"}]/* * Pour changer cet en-tête de licence, choisissez en-têtes de licence dans Propriétés du projet. * Pour modifier ces charges de modèle, choisissez Outils | Modèles * et ouvrez le modèle dans l'éditeur. */

semble être la réponse, de le mettre simplement le bloc de commentaire qui est en quelque sorte ajouté à la réponse rend les notes de réponse JSON valides. Étant donné que le texte ne figure pas dans l'axe donné doit provenir d'ailleurs dans votre application. Étant donné que la réponse est défectueuse l'erreur doit être dans le code PHP.