Java 在Node.js中使用BodyParser解析JSON数组

Java 在Node.js中使用BodyParser解析JSON数组,java,android,node.js,body-parser,Java,Android,Node.js,Body Parser,您好,在何处使用node.js转换json,使用body解析器使用下面输入的代码进行转换:我在下面生成了错误。这个错误是由什么引起的?我怎样才能解决它?在底部,我添加了用于发送json的前端java代码!奇怪的是,-Note-字段没有显示在request.body中 错误-->控制台.log(请求.body): '{"Articoli":': { '{"Codice":"VAS-100","Descrizione":"SCHEDA DI ANALISI AD 1 INGRESSO \/ 1

您好,在何处使用node.js转换json,使用body解析器使用下面输入的代码进行转换:我在下面生成了错误。这个错误是由什么引起的?我怎样才能解决它?在底部,我添加了用于发送json的前端java代码!奇怪的是,-Note-字段没有显示在request.body中

错误-->控制台.log(请求.body):

'{"Articoli":':
   { '{"Codice":"VAS-100","Descrizione":"SCHEDA DI ANALISI AD 1 INGRESSO \/ 1 USCITA ALLARME","Prezzo":"35.0"}': '' } }

Error  SyntaxError: Unexpected end of JSON input
    at JSON.parse (<anonymous>)
    const express = require("express");
    const myParser = require("body-parser");
    const http = require('http');
    const app = express(); 

    app.use(myParser.json());
    app.use(myParser.urlencoded({ extended: true }));
    //port
    const RunPort=8989;
    //server run on port
    app.listen(RunPort, function () {
        console.log("Server run on Port: ",RunPort);
    })

app.post("/rapportini/generarapportino", async function (request, response) {

    try {
        console.log(request.body);
        var data = JSON.parse(Object.keys(request.body)[0]);
        const ret = await RapportiniController.GeneraRapportino(data.Note);
        response.setHeader('Content-Type', 'application/json');
        response.send(JSON.stringify({
            return: ret
        }));
    } catch (err) {
        console.log("Error ", err)
    }
});
  {
    "Note": "some note",
    "Articoli":[{
                    "Codice": "CodiceValue 1",
                    "Descrizione": "DescrizioneValue 1",
                    "Presso": "Prezzo 1"
                },
                {
                    "Codice": "CodiceValue 2",
                    "Descrizione": "DescrizioneValue 2",
                    "Presso": "Prezzo 2"
                }]
    }
 String ret = "";
        try {
            JSONObject obj = new JSONObject();
            obj.put("Note", note);
            JSONArray objarticoli = new JSONArray();
            int size = articoli.size();
            int i = 0;
            System.out.println("\n Size of articoli: " + size);

            for (i = 0; i <
                    size; i++) {

                JSONObject artItem = new JSONObject();
                artItem.put("Codice", articoli.get(i).GetCodice().toString());
                artItem.put("Descrizione", articoli.get(i).GetDescrizione().toString());
                artItem.put("Prezzo", articoli.get(i).GetPrezzo().toString());
                objarticoli.put(artItem);
            }

            obj.put("Articoli", objarticoli);

            try {
                Database db = new Database();
                ret = db.RequestArray("/rapportini/generarapportino", obj, true);
            } catch (Exception ex) {
                System.out.println("\n Errore login Model");
            }

        } catch (Exception ex) {
            ErrorManagement.SendError("Errore: Generazione Rapportino: " + ex);
        }
        return ret;
String response = "";
        System.out.println("\n Sono in GetResponse con JSONOject: "+object);
        try {
            URL url = new URL("/rapportini/generarapportino");
            byte[] postDataBytes = object.toString().getBytes("UTF-8");
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            conn.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length));
            conn.setDoOutput(true);
            conn.getOutputStream().write(postDataBytes);
            Reader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
            StringBuilder sb = new StringBuilder();
            for (int c; (c = in.read()) >= 0; ) {
                sb.append((char) c);
            }
            response = sb.toString();
        } catch (Exception ex) {
            System.out.println("\n Errore funzione GetResponse class JSONRequest: "+ex);
        }
        return response;
JSON:

'{"Articoli":':
   { '{"Codice":"VAS-100","Descrizione":"SCHEDA DI ANALISI AD 1 INGRESSO \/ 1 USCITA ALLARME","Prezzo":"35.0"}': '' } }

Error  SyntaxError: Unexpected end of JSON input
    at JSON.parse (<anonymous>)
    const express = require("express");
    const myParser = require("body-parser");
    const http = require('http');
    const app = express(); 

    app.use(myParser.json());
    app.use(myParser.urlencoded({ extended: true }));
    //port
    const RunPort=8989;
    //server run on port
    app.listen(RunPort, function () {
        console.log("Server run on Port: ",RunPort);
    })

app.post("/rapportini/generarapportino", async function (request, response) {

    try {
        console.log(request.body);
        var data = JSON.parse(Object.keys(request.body)[0]);
        const ret = await RapportiniController.GeneraRapportino(data.Note);
        response.setHeader('Content-Type', 'application/json');
        response.send(JSON.stringify({
            return: ret
        }));
    } catch (err) {
        console.log("Error ", err)
    }
});
  {
    "Note": "some note",
    "Articoli":[{
                    "Codice": "CodiceValue 1",
                    "Descrizione": "DescrizioneValue 1",
                    "Presso": "Prezzo 1"
                },
                {
                    "Codice": "CodiceValue 2",
                    "Descrizione": "DescrizioneValue 2",
                    "Presso": "Prezzo 2"
                }]
    }
 String ret = "";
        try {
            JSONObject obj = new JSONObject();
            obj.put("Note", note);
            JSONArray objarticoli = new JSONArray();
            int size = articoli.size();
            int i = 0;
            System.out.println("\n Size of articoli: " + size);

            for (i = 0; i <
                    size; i++) {

                JSONObject artItem = new JSONObject();
                artItem.put("Codice", articoli.get(i).GetCodice().toString());
                artItem.put("Descrizione", articoli.get(i).GetDescrizione().toString());
                artItem.put("Prezzo", articoli.get(i).GetPrezzo().toString());
                objarticoli.put(artItem);
            }

            obj.put("Articoli", objarticoli);

            try {
                Database db = new Database();
                ret = db.RequestArray("/rapportini/generarapportino", obj, true);
            } catch (Exception ex) {
                System.out.println("\n Errore login Model");
            }

        } catch (Exception ex) {
            ErrorManagement.SendError("Errore: Generazione Rapportino: " + ex);
        }
        return ret;
String response = "";
        System.out.println("\n Sono in GetResponse con JSONOject: "+object);
        try {
            URL url = new URL("/rapportini/generarapportino");
            byte[] postDataBytes = object.toString().getBytes("UTF-8");
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            conn.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length));
            conn.setDoOutput(true);
            conn.getOutputStream().write(postDataBytes);
            Reader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
            StringBuilder sb = new StringBuilder();
            for (int c; (c = in.read()) >= 0; ) {
                sb.append((char) c);
            }
            response = sb.toString();
        } catch (Exception ex) {
            System.out.println("\n Errore funzione GetResponse class JSONRequest: "+ex);
        }
        return response;
前端Java代码(Android):

'{"Articoli":':
   { '{"Codice":"VAS-100","Descrizione":"SCHEDA DI ANALISI AD 1 INGRESSO \/ 1 USCITA ALLARME","Prezzo":"35.0"}': '' } }

Error  SyntaxError: Unexpected end of JSON input
    at JSON.parse (<anonymous>)
    const express = require("express");
    const myParser = require("body-parser");
    const http = require('http');
    const app = express(); 

    app.use(myParser.json());
    app.use(myParser.urlencoded({ extended: true }));
    //port
    const RunPort=8989;
    //server run on port
    app.listen(RunPort, function () {
        console.log("Server run on Port: ",RunPort);
    })

app.post("/rapportini/generarapportino", async function (request, response) {

    try {
        console.log(request.body);
        var data = JSON.parse(Object.keys(request.body)[0]);
        const ret = await RapportiniController.GeneraRapportino(data.Note);
        response.setHeader('Content-Type', 'application/json');
        response.send(JSON.stringify({
            return: ret
        }));
    } catch (err) {
        console.log("Error ", err)
    }
});
  {
    "Note": "some note",
    "Articoli":[{
                    "Codice": "CodiceValue 1",
                    "Descrizione": "DescrizioneValue 1",
                    "Presso": "Prezzo 1"
                },
                {
                    "Codice": "CodiceValue 2",
                    "Descrizione": "DescrizioneValue 2",
                    "Presso": "Prezzo 2"
                }]
    }
 String ret = "";
        try {
            JSONObject obj = new JSONObject();
            obj.put("Note", note);
            JSONArray objarticoli = new JSONArray();
            int size = articoli.size();
            int i = 0;
            System.out.println("\n Size of articoli: " + size);

            for (i = 0; i <
                    size; i++) {

                JSONObject artItem = new JSONObject();
                artItem.put("Codice", articoli.get(i).GetCodice().toString());
                artItem.put("Descrizione", articoli.get(i).GetDescrizione().toString());
                artItem.put("Prezzo", articoli.get(i).GetPrezzo().toString());
                objarticoli.put(artItem);
            }

            obj.put("Articoli", objarticoli);

            try {
                Database db = new Database();
                ret = db.RequestArray("/rapportini/generarapportino", obj, true);
            } catch (Exception ex) {
                System.out.println("\n Errore login Model");
            }

        } catch (Exception ex) {
            ErrorManagement.SendError("Errore: Generazione Rapportino: " + ex);
        }
        return ret;
String response = "";
        System.out.println("\n Sono in GetResponse con JSONOject: "+object);
        try {
            URL url = new URL("/rapportini/generarapportino");
            byte[] postDataBytes = object.toString().getBytes("UTF-8");
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            conn.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length));
            conn.setDoOutput(true);
            conn.getOutputStream().write(postDataBytes);
            Reader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
            StringBuilder sb = new StringBuilder();
            for (int c; (c = in.read()) >= 0; ) {
                sb.append((char) c);
            }
            response = sb.toString();
        } catch (Exception ex) {
            System.out.println("\n Errore funzione GetResponse class JSONRequest: "+ex);
        }
        return response;
生成JSON:

'{"Articoli":':
   { '{"Codice":"VAS-100","Descrizione":"SCHEDA DI ANALISI AD 1 INGRESSO \/ 1 USCITA ALLARME","Prezzo":"35.0"}': '' } }

Error  SyntaxError: Unexpected end of JSON input
    at JSON.parse (<anonymous>)
    const express = require("express");
    const myParser = require("body-parser");
    const http = require('http');
    const app = express(); 

    app.use(myParser.json());
    app.use(myParser.urlencoded({ extended: true }));
    //port
    const RunPort=8989;
    //server run on port
    app.listen(RunPort, function () {
        console.log("Server run on Port: ",RunPort);
    })

app.post("/rapportini/generarapportino", async function (request, response) {

    try {
        console.log(request.body);
        var data = JSON.parse(Object.keys(request.body)[0]);
        const ret = await RapportiniController.GeneraRapportino(data.Note);
        response.setHeader('Content-Type', 'application/json');
        response.send(JSON.stringify({
            return: ret
        }));
    } catch (err) {
        console.log("Error ", err)
    }
});
  {
    "Note": "some note",
    "Articoli":[{
                    "Codice": "CodiceValue 1",
                    "Descrizione": "DescrizioneValue 1",
                    "Presso": "Prezzo 1"
                },
                {
                    "Codice": "CodiceValue 2",
                    "Descrizione": "DescrizioneValue 2",
                    "Presso": "Prezzo 2"
                }]
    }
 String ret = "";
        try {
            JSONObject obj = new JSONObject();
            obj.put("Note", note);
            JSONArray objarticoli = new JSONArray();
            int size = articoli.size();
            int i = 0;
            System.out.println("\n Size of articoli: " + size);

            for (i = 0; i <
                    size; i++) {

                JSONObject artItem = new JSONObject();
                artItem.put("Codice", articoli.get(i).GetCodice().toString());
                artItem.put("Descrizione", articoli.get(i).GetDescrizione().toString());
                artItem.put("Prezzo", articoli.get(i).GetPrezzo().toString());
                objarticoli.put(artItem);
            }

            obj.put("Articoli", objarticoli);

            try {
                Database db = new Database();
                ret = db.RequestArray("/rapportini/generarapportino", obj, true);
            } catch (Exception ex) {
                System.out.println("\n Errore login Model");
            }

        } catch (Exception ex) {
            ErrorManagement.SendError("Errore: Generazione Rapportino: " + ex);
        }
        return ret;
String response = "";
        System.out.println("\n Sono in GetResponse con JSONOject: "+object);
        try {
            URL url = new URL("/rapportini/generarapportino");
            byte[] postDataBytes = object.toString().getBytes("UTF-8");
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            conn.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length));
            conn.setDoOutput(true);
            conn.getOutputStream().write(postDataBytes);
            Reader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
            StringBuilder sb = new StringBuilder();
            for (int c; (c = in.read()) >= 0; ) {
                sb.append((char) c);
            }
            response = sb.toString();
        } catch (Exception ex) {
            System.out.println("\n Errore funzione GetResponse class JSONRequest: "+ex);
        }
        return response;

首先使用JSON.stringify,然后解析它以获得所需的输出

var req={ '{"Articoli":': { '{"Codice":"KSI4101000.300","Descrizione":"gemino Bus Scheda GSM\/GPRS (solo PCBA) solo per KS-BUS","Prezzo":"163.35"}': '' } }

var data = JSON.parse(JSON.stringify(req));

您需要在Android应用程序中设置正确的
内容类型
,即
application/json

conn.setRequestProperty("Content-Type", "application/json");
然后在NodeJS应用程序中接受

app.post("/rapportini/generarapportino", async function (request, response) {

    try {
        const ret = await RapportiniController.GeneraRapportino(request.body.Note);
        response.json({
            return: ret
        });
    } catch (err) {
        console.log("Error ", err)
    }
});

您的请求正文是什么?您从前端发送了错误的json-end@CaptainJackSparrow这:{{“Articoli”::{“Codice”:“KSI4101000.300”,“Descriptione”:“gemino Bus Scheda GSM\/GPRS(solo PCBA)solo per KS-Bus”,“Prezzo”:“163.35”}:“'}}为什么
JSON.parse(Object.keys(request.body)[0])
?如果你收到JSON的帖子,我希望
JSON.parse(request.body)
@T.J.Crowder我试过了,我总是有上面描述的相同错误OK,但是如果我按照你写的那样做:无论如何都不会显示注释字段!它会显示。你的request.body应该有注释字段..post request.body这里是JSON和你的代码:{'{“Articoli”:“:{”Codice:“KSI4101000.300”,“Descriptione:“gemino Bus Scheda GSM\/GPRS(solo PCBA)solo per KS-Bus”,“Prezzo:“163.35”},{”Codice:“KSI6301000.310”,“Descriptione:“SIRENA per Bus KS IMAGO AUTOALIMENTATA”,“Prezzo:“89.37”:“}”但是如果我检查jsonlint,它会告诉我它的格式不正确undefined@riki你有没有像我上面提到的那样更新你的Android代码?line
System.out.println(“\n GetResponse-con-jsonobject:“+object”)的输出是什么?
?这是输出:{“Articoli”:[{“Codice”:“AX 211A”,“Descrizione”:功能丰富的带有CCD传感器的网络摄像头,提供超级、“Prezzo”:“705.0”}],“注意”:“sa”}您可以参考如何在POST请求中发送json数据