Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Java和Node.js之间的JSON通信_Javascript_Java_Node.js_Express_Router - Fatal编程技术网

Javascript Java和Node.js之间的JSON通信

Javascript Java和Node.js之间的JSON通信,javascript,java,node.js,express,router,Javascript,Java,Node.js,Express,Router,我必须从java向node.js发送一个json!要执行此操作,请使用以下代码!json由一个注释字段和一个特定类型的数组组成!事实上,当我在node.js中打印值时,我出现了下面的错误。你能给我解释一下,我怎样才能得到这些值​​从node.js中的JSON?奇怪的是,note字段甚至没有打印出来 错误: { '{"Articoli":': { '"SADRIN 830","8 RAGGI DOPPI 8TX 8RX - ALTEZZA 3,00 MT","232.0"': '' } }

我必须从java向node.js发送一个json!要执行此操作,请使用以下代码!json由一个注释字段和一个特定类型的数组组成!事实上,当我在node.js中打印值时,我出现了下面的错误。你能给我解释一下,我怎样才能得到这些值​​从node.js中的JSON?奇怪的是,note字段甚至没有打印出来

错误:

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

});

在node.js代码中,您试图只解析请求json正文的第一个属性。通常正确的方法是解析整个请求体,然后处理结果对象。您可以这样尝试吗?

您正在覆盖for循环中的json数组项,因此最终您将只拥有上一个Articoli的属性,尝试为每个Articoli项创建一个json对象并将其放入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);

什么是
console.log(request.body)准确记录?您的JSON可能无效。当json.parse()出现问题时,您可以使用jsonlint验证任何json字符串。db.RequestArray做什么?@Shilly console.log(request.body)精确打印我在上面插入的错误字段!奇怪的是,java中用于管理json的类是sun!所以我不认为这有任何问题!很可能是关于node.js的@bhspencer向node.js的路由器发送一个json对象(它会生成一个到node.js路由器的httpurlconnection)我尝试了你的解决方案:当java循环执行时,它会引发这个异常:java.lang.StackOverflower溢出,因为应用程序运行在androidjava.lang.StackOverflower上,这意味着你有一个无限循环或未阻止的递归调用,首先修复循环退出条件,它应该是iI have change Articoli.size(),但现在我有一个例外:org.json.JSONException:输入结束时,可能有一个Articoli items属性(Codice、descripione或Presso)的字符0为null或空,在将这些属性添加到jsonI check Articoli项目之前,您可以在这些属性上添加null/empty check,它们中没有一个是null或VOIDE。您可以更好地解释自己!也就是说,我在开始时打印整个请求,并选择要预览的数组的第一个元素!我应该怎么做?在这行代码中
var data=JSON.parse(Object.keys(request.body)[0])您正在创建一个仅包含请求主体对象的属性键的数组,然后解析其中的第一个。我建议的方法是解析整个请求体(
var data=JSON.parse(request.body);
),然后从结果对象中提取所需的内容。我还建议最好检查Elgayed的答案,因为我认为在构建json时也存在一些问题var art=日期。文章?
{
"Note": "some note",
"Articoli":[{
                "Codice": "CodiceValue 1",
                "Descrizione": "DescrizioneValue 1",
                "Presso": "Prezzo 1"
            },
            {
                "Codice": "CodiceValue 2",
                "Descrizione": "DescrizioneValue 2",
                "Presso": "Prezzo 2"
            }]
}