Error while loading JSON

Asked

Viewed 157 times

-1

In the link below, I have a return JSON:

http://localhost/hotplateprensas.com.br/Ws/produtos.php

is delivering the following return:

[{"ProdutosidProduto":"1","Produtostipo":"mp","Produtosmodelo":"F540 2 BAN.PNEU. 100 X 60","Produtosbandejas":"2","Produtospeso":"0","Produtosprensagem":"0","ProdutosprecoUnitario":"6500","Produtoscomprimento":"100","Produtoslargura":"60","Produtoscabo":"0","Produtosligacao":"n","Produtospotencia":"0","Produtosconsumo":"0","Produtoscorrente":"0","Produtosdisjuntor":"0","Produtosdescricao":"
Bom Produto","Produtosestoque":"7","ProdutosfreteGratis":"s","Produtosbloqueado":"n"},

Yes, there is more return. However, I only put this so that it is not longer than this question.

And in my app, I have the following código:

package com.example.carlos.radiosingular;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

import com.example.carlos.radiosingular.classes.Produtos;

public class form extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.form);
        List<Produtos> produtos = jSon("http://www.hotplateprensas.com.br/ws/produtos.php");

        for (Produtos p : produtos) {
            System.out.println(p.getModelo());
        }
    }

    private List<Produtos> jSon(String jsonString) {

        List<Produtos> produtos = new ArrayList<Produtos>();

        try {
            JSONArray produtosLists = new JSONArray(jsonString);
            System.out.println(produtosLists);
            JSONObject produtosList = produtosLists.getJSONObject(0);
            JSONArray produtosArray = produtosList.getJSONArray("produtos");

            JSONObject produto;

            for (int i = 0; i < produtosArray.length(); i++) {
                produto = new JSONObject(produtosArray.getString(i));
                Produtos produtoCada = new Produtos(

                        produto.getInt("ProdutosidProduto"),
                        produto.getString("Produtostipo"),
                        produto.getString("Produtosmodelo"),
                        produto.getInt("Produtosbandejas"),
                        produto.getInt("Produtospeso"),
                        produto.getInt("Produtosprensagem"),
                        produto.getInt("ProdutosprecoUnitario"),
                        produto.getInt("Produtoscomprimento"),
                        produto.getInt("Produtoslargura"),
                        produto.getString("Produtoscabo"),
                        produto.getString("Produtosligacao"),
                        produto.getInt("Produtospotencia"),
                        produto.getInt("Produtosconsumo"),
                        produto.getInt("Produtoscorrente"),
                        produto.getInt("Produtosdisjuntor"),
                        produto.getString("Produtosdescricao"),
                        produto.getInt("Produtosestoque"),
                        produto.getString("ProdutosfreteGratis"),
                        produto.getString("Produtosbloqueado")
                );
                produtos.add(produtoCada);
            }
        } catch (JSONException e) {
            Log.e("HOT PLATE PRENSAS", "Erro no parsing do JSON", e);
        }

        return produtos;
    }

}

The goal is, at first, to print an object.

But, in the console RUN the following error comes out:

E/HOT PLATE PRENSAS: Erro no parsing do JSON
    org.json.JSONException: Value http of type java.lang.String cannot be converted to JSONArray
        at org.json.JSON.typeMismatch(JSON.java:111)
        at org.json.JSONArray.<init>(JSONArray.java:96)
        at org.json.JSONArray.<init>(JSONArray.java:108)
        at com.example.carlos.radiosingular.form.jSon(form.java:43)
        at com.example.carlos.radiosingular.form.onCreate(form.java:24)
        at android.app.Activity.performCreate(Activity.java:6687)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1140)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2631)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2743)
        at android.app.ActivityThread.-wrap12(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1490)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6165)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:778)
I/ViewConfigCompat: Could not find method getScaledScrollFactor() on ViewConfiguration
W/art: Before Android 4.1, method int android.support.v7.widget.DropDownListView.lookForSelectablePosition(int, boolean) would have incorrectly overridden the package-private method in android.widget.ListView
D/OpenGLRenderer: endAllActiveAnimators on 0x8e5d8c00 (RippleDrawable) with handle 0x8e5d5ea0

Here is the class Produtos:

package com.example.carlos.radiosingular.classes;

public class Produtos {

private int idProduto;
private String tipo;
private String modelo;
private int bandejas;
private int peso;
private int prensagem;
private int precoUnitario;
private int comprimento;
private int largura;
private String cabo;
private String ligacao;
private int potencia;
private int consumo;
private int corrente;
private int disjuntor;
private String descricao;
private int estoque;
private String freteGratis;
private String bloqueado;

    public Produtos(
            int idProduto,
            String tipo,
            String modelo,
            int bandejas,
            int peso,
            int prensagem,
            int precoUnitario,
            int comprimento,
            int largura,
            String cabo,
            String ligacao,
            int potencia,
            int consumo,
            int corrente,
            int disjuntor,
            String descricao,
            int estoque,
            String freteGratis,
            String bloqueado) {
        this.idProduto = idProduto;
        this.tipo = tipo;
        this.modelo = modelo;
        this.bandejas = bandejas;
        this.peso = peso;
        this.prensagem = prensagem;
        this.precoUnitario = precoUnitario;
        this.comprimento = comprimento;
        this.largura = largura;
        this.cabo = cabo;
        this.ligacao = ligacao;
        this.potencia = potencia;
        this.consumo = consumo;
        this.corrente = corrente;
        this.disjuntor = disjuntor;
        this.descricao = descricao;
        this.estoque = estoque;
        this.freteGratis = freteGratis;
        this.bloqueado = bloqueado;
    }

    public int getIdProduto() {
        return idProduto;
    }

    public String getTipo() {
        return tipo;
    }

    public String getModelo() {
        return modelo;
    }

    public int getBandejas() {
        return bandejas;
    }

    public int getPeso() {
        return peso;
    }

    public int getPrensagem() {
        return prensagem;
    }

    public int getPrecoUnitario() {
        return precoUnitario;
    }

    public int getComprimento() {
        return comprimento;
    }

    public int getLargura() {
        return largura;
    }

    public String getCabo() {
        return cabo;
    }

    public String getLigacao() {
        return ligacao;
    }

    public int getPotencia() {
        return potencia;
    }

    public int getConsumo() {
        return consumo;
    }

    public int getCorrente() {
        return corrente;
    }

    public int getDisjuntor() {
        return disjuntor;
    }

    public String getDescricao() {
        return descricao;
    }

    public int getEstoque() {
        return estoque;
    }

    public String getFreteGratis() {
        return freteGratis;
    }

    public String getBloqueado() {
        return bloqueado;
    }

}

Not printa nothing on the screen.

Where I’m going wrong that’s falling in

Log.e("HOT PLATE PRENSAS", "Erro no parsing do JSON", e);

?

1 answer

0

What you have there is a json inside a json. You have to do something similar with that:

JSONObject cli = new JSONObject();
cli = (JSONObject) clientes.get(0);
JSONArray client = cli.getJSONArray("NomeCliente");
JSONArray cCpf = cli.getJSONArray("CPFCliente");
SONArray cId = cli.getJSONArray("IdCliente");

Where clients are the variable that is storing php’s return

  • cli is a JSON array

  • discovered in this way products.foreach(product -> System.out.println(product.getModel()); , but gives error that LAMBDA is not supported in version 7

  • "cli is a JSON array" that’s it. You get a json object that inside has a json array. Doing just like I told you to do it right.

  • is the opposite then? The entire string is an object and each node of the object is an array? [{"Productproduct":"1","......"... this is all one object?

  • I have an array of objects

  • Kind of hard to understand.

  • I am almost there: see this doubt, at the end of it I implement the way you are teaching me: https://answall.com/questions/349577/percorrer-um-array-de-objetos-json-no-android-studio

Show 2 more comments

Browser other questions tagged

You are not signed in. Login or sign up in order to post.