简体   繁体   中英

Send JSON Data From JavaScript to a Servlet

... I am experiencing an anomaly that I do not understand why. The scenario is as follows:

1.- From JSP, using JS, I send data in JSON format to a servlet.

  JSON:  "{'ORDER': '1', 'DATE': '06-01-2018', 'TIME': '07:06:51', 'BOUCHER': '208896.0', 'LIC' : 'HSGR30', 'QTY': '0.0'} "

2.- I capture the data, with the getParameter utility, on a String type variable.

3.- I pass the variable to the JSONObject utility, and it does not process it since there are two "" ( two double quotes ) in that variable, and debugging the class (JSONObject) throws an exception because the first character of the string is not "{"... which is logical.

4.- Now, if I take the complete stream and paste it in the call:

JSONObject obj = new JSONObject ("{'ORDER': '1', 'DATE': '06-01-2018', 'TIME': '07:06:51', 'BOUCHER': '208896.0' , 'LIC': 'HSGR30', 'QTY': '0.0'} ") 

It processes it correctly and I get the object with its associated properties and values.

I was considering that the JSON format I send from JS is not valid???. But I can't find the cause of why???

The problem is that I don't understand why two double quotes appear.

If you can give me a hand with this,

thank you very much !!!

use double quotes: " instead of single quotes: ' and use \ before each doublquote to escape the characters.

Eg:

JSONObject obj = new JSONObject ("{\"ORDER\": \"1\",\"DATE\": \"06-01-2018\",\"TIME\": \"07: 06: 51\",\"BOUCHER\": \"208896.0\",\"LIC\": \"HSGR30\",\"QTY\": \"0.0\"}"); 

Very grateful for your prompt replies.

I found the problem, in the js code I was doing JSON.stringify() . I remove it and everything is fine.

I just need to rethink how to send, from js, package JSON formatted records.

It was not clear how JSONObject handles the string it receives.

I guess I'll have to rethink an array of JSON objects and then send it. Perhaps, by receiving array object type, it will understand that it is a batch of records.

Thanks again

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM