Cómo publicar una matriz en la actualización de Android

4 minutos de lectura

Cómo publicar una matriz en la actualización de Android
Deepak Sharma

¿Cómo puedo publicar el siguiente parámetro en la actualización a través del método de publicación?

 "params":{"body": {
    "learning_objective_uuids": [
      "ED4FE2BB2008FDA9C8133FF462959C0968FAB98C4D1DB8F2"
    ],
    "note": "FasfAFSASFASDF",
    "user_uuids": [
      "EDF8B7EC20005ACC5C40FF7D6E988801F5BAD83CBBCDB97F",
      "EDF8F78F2000569C64101F244AA20C0070D2A7FCB1939E19"
    ]
  }
}
} }

  • que parametro Hay muchos parámetros más de uno…

    – hkaraoglu

    16 mayo 2016 en 12:52


  • Estos parámetros: – “learning_objective_uuids”: [ “ED4FE2BB2008FDA9C8133FF462959C0968FAB98C4D1DB8F2″ ]”nota”: “FasfAFSASFASDF”, “user_uuids”: [ “EDF8B7EC20005ACC5C40FF7D6E988801F5BAD83CBBCDB97F”, “EDF8F78F2000569C64101F244AA20C0070D2A7FCB1939E19” ] } } }

    – Deepak Sharma

    16 mayo 2016 en 12:53

  • Escribí la respuesta a continuación …

    – hkaraoglu

    16 mayo 2016 en 12:57

  • escriba cualquier razón en los comentarios cuando vaya a votar negativamente. Esta es una forma constructiva, creo

    – Yasin Kaçmaz

    16 mayo 2016 en 13:06

  • @Revenge, no sé por qué algunas personas estúpidas votan negativamente la pregunta. Es una pregunta genuina. Qué piensas ?

    – Deepak Sharma

    17 mayo 2016 en 07:23

Cómo publicar una matriz en la actualización de Android
hkaraoglu

@FormUrlEncoded
@POST("service_name") 
   void functionName(
        @FieldMap Map<String, String> learning_objective_uuids, @FieldMap Map<String, String> user_uuids, @Field("note") String note,
        Callback<CallBackClass> callback
    );

Mejor solución: Use arraylist.. Enlace de referencia: johnsonsu

@FormUrlEncoded
    @POST("service_name") 
       void functionName(
            @Field("learning_objective_uuids[]") ArrayList<String> learning_objective_uuids, @Field("user_uuids[]") ArrayList<String> user_uuids, @Field("note") String note,
            Callback<CallBackClass> callback
        );

  • Obteniendo la siguiente respuesta: – retrofit.RetrofitError: 400 Bad Request

    – Deepak Sharma

    16 mayo 2016 en 13:21


  • Pon tu función que escribiste tú mismo.

    – hkaraoglu

    16 mayo, 2016 a las 13:30

  • Claro hermano, ¿puedes decirme qué es “lost_project_reasons”?[]” ?

    – Deepak Sharma

    17 mayo 2016 en 06:19

  • gracias por la respuesta, ¡la segunda solución con arrayList funcionó! +1

    – Deepak Sharma

    17 mayo 2016 en 06:43

  • también puede enviar matriz como int[] o largo[] así: @Field(“lost_project_reasons[]”) En t[] aprendizaje_objetivo_uuids

    – Saba

    25 sep.

vea este ejemplo donde necesito pasar datos de campos de registro como solicitud json

@POST("magento2apidemo/rest/V1/customers")
Call<RegisterEntity> customerRegistration(@Body JsonObject registrationData);

aquí he creado el registroLos datos son

private static JsonObject generateRegistrationRequest() {
        JSONObject jsonObject = new JSONObject();
        try {
            JSONObject subJsonObject = new JSONObject();
            subJsonObject.put("email", "[email protected]");
            subJsonObject.put("firstname", "abc");
            subJsonObject.put("lastname", "xyz");

            jsonObject.put("customer", subJsonObject);
            jsonObject.put("password", "password");

        } catch (JSONException e) {
            e.printStackTrace();
        }
        JsonParser jsonParser = new JsonParser();
        JsonObject gsonObject = (JsonObject) jsonParser.parse(jsonObject.toString());
        return gsonObject;
    }

  • El único punto a tener en cuenta es “cuando desee enviar una matriz al servidor, agregue esos valores a JsonArray y colóquelos dentro de JsonObject”.

    – MobileEvangelista

    15 sep.


A partir de hoy, ejecutando el Retrofit implementation 'com.squareup.retrofit2:retrofit:2.1.0'

Esto funciona perfectamente…

@FormUrlEncoded
@POST("index.php?action=item")
Call<Reply> updateManyItem(@Header("Authorization") String auth_token, @Field("items[]") List<Integer> items, @Field("method") String method);

Puede hacer caso omiso de la @Header y @Field("method") …. la pieza principal es @Field("items[]") List<Integer> items

Esto es lo que le permite enviar los artículos. En el lado de la API, simplemente estoy buscando una matriz de números enteros y esto funciona perfectamente.

  • Lo único que olvidé fue el “[]” después del nombre del campo. ¡Muchas gracias!

    – Quentin Doutriaux

    11 dic. 19 en 9:20

Cómo publicar una matriz en la actualización de Android
Yasin Kaçmaz

Ir a este sitio: Esquema JSON 2 POJO

Pegue su formato Json de ejemplo y luego

Seleccionar tipo de fuente: JSON, estilo de anotación: Ninguno

Cree una clase POJO entonces, por ejemplo, su nombre de clase: MyPOJOClass

Luego en tu API:

@POST("endpoint")
public Call<Void> postArray(@Body MyPOJOClass mypojoclass);

Si también tiene encabezados, puede agregarlos en parámetros como ese:

@Header("Accept") String accept,@Header("Content-Type") String contentType

@Edit: para su comentario, consulte mi respuesta: how-to-use-gson-2-0-on-onresponse-from-retrofit-2-0

He encontrado una nueva solución:

puedes enviarlo como una cadena:

@POST("CollectionPoints")
@FormUrlEncoded
Call<SomeResponse> postSomething(@Field("ids")String ids);

y enviar pasarlo así:

Call<SomeResponse> call = service.postSomething("0","0", Arrays.toString(new int[]{53551, 53554}));

¡Atentamente!

Cómo publicar una matriz en la actualización de Android
Raúl

Gson es la mejor solución para los problemas relacionados con JSON Object/Array.

Aquí, estoy compartiendo mi solución más fácil para pasar el valor del tipo de matriz en la API de actualización

id: ArrayList<String> //Already initilized 
status: String  //Already initilized 

val jsonObject = JsonObject()
val toJson = Gson().toJsonTree(id) //Only one line to covert array JsonElement

jsonObject.add("id", toJson) //Add Json Element in JsonObject

jsonObject.addProperty("status", status)

API llamando usando jsonObjeto

@POST("API_END_POINT")
fun changeStatusOfList(@Body jsonObject: JsonObject): Observable<Response<RETURN_TYPE>>

Salida en registro:

{"id":["426","427"],"status":"1"}

Cómo publicar una matriz en la actualización de Android
asombrado

si quieres enviar una lista del mismo nombre lo unico que me funciono en retrofit2 es usar @Query

@FormUrlEncoded
@POST("service_name") 
   void functionName(
        @Query("category") List<Int> categories
    );

esto lo enviará como: https://example.com/things?category=100&category=101&category=105

las respuestas aceptadas parecen no funcionar en Retrofit2

.

¿Ha sido útil esta solución?