Cómo leer JSON en el parámetro de consulta de solicitud de solicitud -- java campo con spring campo con rest campo con spring-mvc campo con spring-boot camp Relacionados El problema

How to read JSON in GET request query parameter


0
vote

problema

Español

Tengo que leer los valores JSON de la URL utilizando un parámetro de consulta para obtener una solicitud. Estoy usando Tomcat más reciente en un proyecto de arranque de primavera.

         @RequestMapping(             value = "/values",             method = RequestMethod.GET,              headers = HttpHeaders.ACCEPT + "=" + MediaType.APPLICATION_JSON_VALUE,             produces = "application/json")        public ResponseEntity<String> myMethod(             @RequestParam(value="key") String jsonRequestString) {        //parse JSONString         //--        }   

obtener solicitud a la URL

url: - http: // localhost: puerto / valores? Tecla = {" org ":" aa ", "Puntos": [{"Nombre": "XY", "MEDIDAS": "343"}]}]

lanza java.lang.illegalargumentException : carácter no válido encontrado en el objetivo de solicitud. Los caracteres válidos se definen en RFC 7230 y RFC 3986

Editar : - Enviar JSON en forma original que me lleva a ninguna parte, por lo que el enfoque de trabajo sería enviar al JSON en un formulario codificado.

Original en ingles

I have to read JSON values from the URL using a query parameter for GET request. I am using Tomcat latest in a Spring Boot project.

       @RequestMapping(             value = "/values",             method = RequestMethod.GET,              headers = HttpHeaders.ACCEPT + "=" + MediaType.APPLICATION_JSON_VALUE,             produces = "application/json")        public ResponseEntity<String> myMethod(             @RequestParam(value="key") String jsonRequestString) {        //parse JSONString         //--        } 

GET request to the URL

Url:- http://localhost:port/values?key={"org":"AA","points":[{"name":"xy","Measures":"343"}]}]

Throws java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986

EDIT :- Sending JSON in original form leading me to nowhere, so working approach would be to send the JSON in an encoded form.

              
         
         

Lista de respuestas

2
 
vote

Puede codificar el parámetro de clave a Formato BASE64 y agregar en URL y luego decodificarlo y usarlo en su método del controlador.

Tecla JSON Texto {"ORG": "AA", "PUNTOS": ["NOMBRE": "XY", "MEDIDAS": "343"}]}]

Base 64 Texto codificado eyjvcmcioijbqsisinbvaw50cyi6w3sibmftzsi6inh5iiwitwvhc3vyzxmioiizndmifv19xq ==

decodificado de nuevo JSON Text {"ORG": "AA", "PUNTOS": ["NOMBRE": "XY", "MEDIDAS": "343"}]}]

 

you can Encode the key parameter to Base64 format and append in url then decode and use it in your controller method.

key json text {"org":"AA","points":[{"name":"xy","Measures":"343"}]}]

Base 64 encoded text eyJvcmciOiJBQSIsInBvaW50cyI6W3sibmFtZSI6Inh5IiwiTWVhc3VyZXMiOiIzNDMifV19XQ==

decoded to again json text {"org":"AA","points":[{"name":"xy","Measures":"343"}]}]

 
 
         
         
0
 
vote

Puede pasar directamente la cadena en el constructor JSONOBJECT

Hay muchas bibliotecas disponibles.

1. http://www.java2s.com/code/jar /j/downloadjavajsonjar.htm (JSON JAR)

2. http://www.java2s.com/code/jar /j/downloadjsonsimple11jar.htm (JSON simple)

3. http://www.java2s.com/code/jar /g/downloadgson224sourcesjar.htm (GSON de Google)

Yo uso personalmente JSON y JSON JARS.

  JSONObject jsonObject = new JSONObject(variable)   
 

You can directly pass String into the JSONObject constructor

There are lots of libraries available.

1.http://www.java2s.com/Code/Jar/j/Downloadjavajsonjar.htm (JSON jar)

2.http://www.java2s.com/Code/Jar/j/Downloadjsonsimple11jar.htm (Simple JSON)

3.http://www.java2s.com/Code/Jar/g/Downloadgson224sourcesjar.htm (GSON from google)

I personally use JSON and GSON jars.

JSONObject jsonObject = new JSONObject(variable) 
 
 
         
         
0
 
vote

Pocas cosas que deberías cuidar.

  1. Utilice el método post HTTP para publicar su JSON al servidor.
  2. Crear una clase Java Pojo que debe tener una misma estructura que su JSON. Me gusta por debajo de JSON,

       {         "id": 123,         "status": "Ordered",         "product": "Pepsi"        }   

Crearía una clase (puedes crear una clase separada, ya que tiene matriz dentro de JSON),

Orden de clase pública {

  private long id ; private String status;  private String product ;  public long getId() {     return id; } public void setId(long id) {     this.id = id; } public String getStatus() {     return status; } public void setStatus(String status) {     this.status = status; } public String getProduct() {     return product; } public void setProduct(String product) {     this.product = product; }    

}

  1. entonces,

      >0  

Tome referencia de este ejemplo y cree la solución.

 

Few things you should take care of.

  1. Use POST HTTP method to post your JSON to server.
  2. Create a JAVA pojo class which should has a same structure as your JSON. Like for below JSON,

      {         "id": 123,         "status": "Ordered",         "product": "Pepsi"        } 

i would create a class( You can create a two separate class as you has array inside json) ,

public class Order {

private long id ; private String status;  private String product ;  public long getId() {     return id; } public void setId(long id) {     this.id = id; } public String getStatus() {     return status; } public void setStatus(String status) {     this.status = status; } public String getProduct() {     return product; } public void setProduct(String product) {     this.product = product; }  

}

  1. Then,

       @RequestMapping(value = "/values", method = RequestMethod.POST,produces={"application/json"},             consumes={"application/json"})     public ResponseEntity myMethod(                 @RequestBody Order orderObj) {     }

Please take reference from this example and build the solution.

 
 
     
     
0
 
vote

Simplemente puedes probar algo como este

  >111  
 

You can simply try something like this

@GetMapping(value = "/values", produces = MediaType.APPLICATION_JSON_VALUE) @Timed public ResponseEntity<String> testMethod(@RequestParam("key") String key) throws Exception {     JSONObject jsonObject = new JSONObject(key);     // } 
 
 
   
   

Relacionados problema

0  Crear tablas automáticamente llamando al archivo .sql en el lote de primavera?  ( Create tables automatically by calling sql file in spring batch ) 
Seguí muchos enlaces como Marco de lote de primavera - Auto Crear mesa de lote y https://docs.spring.io/spring-boot/docs/2.0.0.m7/reference/htmlsingle/#how...

3  Contraseña de la consola de arranque de primavera  ( Spring boot console password ) 
Yo uso el arranque de primavera y he leído que se debe imprimir un valor predeterminado en el archivo de registro o la consola, pero no hay nada en mi registr...

-1  Bota de primavera con Maven para el proyecto padre  ( Spring boot with maven for parent project ) 
Estoy teniendo un proyecto de boot maven de primavera, cuyo nombre es "csmaster", contiene el código común que uso en mis otros proyectos (AppAdmin). CSSMA...

0  Niño de restricción de clave externa de una a una relación en JPA Hibernate  ( Foreign key constraint child in one to one relationship in jpa hibernate ) 
Bueno, estoy usando la bota de primavera con JPA y tengo una entidad que contiene la misma entidad que el niño se describe a continuación, cómo se encuentra l...

0  Formato de números dobles serializados por la primavera  ( Format of double numbers serialized by spring ) 
Estoy usando la bota de primavera y la banda de primavera y tiene la siguiente DTO: public class InstructionDto { private Long id; private String...

0  Seguridad de la primavera: autenticar la API de descanso solo si aún no está autenticada a través de un inicio de sesión  ( Spring security authenticate rest api only if not already authenticated via for ) 
todos, Tengo una aplicación de arranque de primavera con MVC y Puntos de final de descanso. Los usuarios del inicio de sesión de la aplicación web utilizand...

0  Escritura de la declaración de fideos para filtrar los resultados de la API de Binance devuelve datos arbitrarios  ( Writing foreach statement to filter binance api results returns arbitrary data ) 
Estoy llamando a la API de Binance que devuelve una lista de datos. Ahora quiero filtrar los datos para obtener algunos resultados y almacenar usando foreach...

2  El controlador de resorte de resorte no maneja la entrada comprimida GZIP  ( Spring rest controller does not handle gzip compressed input ) 
He configurado mi aplicación de arranque de primavera para manejar la compresión del servidor HTTP al configurar las siguientes propiedades en application.pr...

1  Spring Boot RestTemplate Cerrar conexión para respuestas nulas Resultados en ConnectionPoolTimeOutExCepciones  ( Spring boot resttemplate close connection for null responses results in connecti ) 
Tenemos una aplicación de arranque de primavera que hace llamadas relajantes a un montón de backends, uno de ellos devuelve los repunes nulos a veces, y estam...

1  Haciendo el trabajo de Aspectj en un servlet de primavera  ( Making aspectj work on a spring servlet bean ) 
Estoy tratando de obtener un AspectProfiler que trabaja en un servlet de Jersey registrado en un proyecto de primavera. El AspectProfiler está cargado, pero n...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos