Связь JSON между Java и Node.js - PullRequest
0 голосов
/ 08 июня 2018

Я должен отправить json из java на node.js!Для этого используйте коды ниже!JSON состоит из одного поля Note и массива определенного типа Articolo !Дело в том, что когда я печатаю значение в node.js, у меня появляется ошибка ниже.Можете ли вы объяснить мне, и как я могу получить значения из JSON внутри node.js?Странно то, что поле заметки даже не печатается

Ошибка:

{ '{"Articoli":':
   { '"SADRIN 830","8 RAGGI DOPPI 8TX 8RX - ALTEZZA 3,00 MT","232.0"': '' } }
SyntaxError: Unexpected end of JSON input at JSON.parse (<anonymous>)

Java-код:

JSONObject obj = new JSONObject();
            obj.put("Note", note);
            JSONArray objArticoli=new JSONArray();
            for(int i=0; i<=Articoli.size(); i++)
            {
                objArticoli.put(0,""+Articoli.get(i).GetCodice());
                objArticoli.put(1,""+Articoli.get(i).GetDescrizione());
                objArticoli.put(2,""+Articoli.get(i).GetPrezzo());

            }
            obj.put("Articoli",objArticoli);

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

Node.js:

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("Errore generazione rapportino ",err)
    }

});

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Вы переопределяете элементы массива json в цикле for, поэтому в итоге у вас будут только атрибуты из последнего Articoli, попробуйте создать объект json для каждого элемента Articoli и поместить его в массив json

JSONObject obj = new JSONObject();
        obj.put("Note", note);
        JSONArray objArticoli=new JSONArray();
        for(int i=0; i<Articoli.size(); i++)
        {
            JSONObject articloliItem = new JSONObject();
            articloliItem.put("Codice", Articoli.get(i).GetCodice());
            articloliItem.put("Descrizione", Articoli.get(i).GetDescrizione());
            articloliItem.put("Prezzo", Articoli.get(i).GetPrezzo());
            objArticoli.put(articloliItem);

        }
        obj.put("Articoli",objArticoli);

В результате объект json будет иметь следующую структуру

{
"Note": "some note",
"Articoli":[{
                "Codice": "CodiceValue 1",
                "Descrizione": "DescrizioneValue 1",
                "Presso": "Prezzo 1"
            },
            {
                "Codice": "CodiceValue 2",
                "Descrizione": "DescrizioneValue 2",
                "Presso": "Prezzo 2"
            }]
}
0 голосов
/ 08 июня 2018

В коде node.js вы пытаетесь проанализировать только первое свойство тела запроса json.Обычно правильный подход заключается в анализе всего тела запроса и последующей работе с полученным объектом.Не могли бы вы попробовать таким образом?

...