Javascript 将JSON数组添加到服务器端事件的返回中

Javascript 将JSON数组添加到服务器端事件的返回中,javascript,json,server-sent-events,Javascript,Json,Server Sent Events,目前我正在以JSON格式编写数据,每次一条消息,如下所示: String[] arr = strLine.split(","); out.append("data: {\n"); out.append("data: \"c1\": " + arr[0].toString()+ ",\n"); out.append("data: \"c2\": " + arr[1].toString()+ ",\n" ); out.append("data: }\n\n"); ou

目前我正在以JSON格式编写数据,每次一条消息,如下所示:

String[] arr = strLine.split(",");

   out.append("data: {\n");
   out.append("data: \"c1\": " + arr[0].toString()+ ",\n");
   out.append("data: \"c2\": " + arr[1].toString()+ ",\n" );
   out.append("data: }\n\n");
   out.flush();
但是,现在我只想在有5条这样的消息时才刷新。那么,我该怎么做呢?创建Json消息?使用单独的数据:{}正文。如果我这样做了,我如何使用javascript在客户端访问c1,c2对?还有其他选择

PS:当我说5个值时,我指的是c1和c2的5对值

如果我这样做,如何在客户端使用javascript访问值

out.append("data: [\n");
for(int j=0; j<5; j++) {
     String[] arr = strLine.split(",");
     if (j!=0) out.append(",\n");
     out.append("\{"c1\": " + arr[0].toString()+ ",\n");
     out.append(\"c2\": " + arr[1].toString()+"}" );
     out.flush();
  }
//HEY MR, LOOK BELOW ME
//HEY MR, LOOK BELOW ME
//HEY MR, LOOK BELOW ME
//HEY MR, LOOK BELOW ME
out.append("]\n"); <---- HEY RIGHT HERE 
//HEY MR, LOOK ABOVE ME
//HEY MR, LOOK ABOVE ME
//HEY MR, LOOK ABOVE ME
//HEY MR, LOOK ABOVE ME
out.flush();
在servlet中,您只需要附加以下行:

response.setContentType("text/event-stream");

请不要手动生成/解析JSON字符串。在Java中使用,在Javascript中使用
JSON.parse
JSON.stringify

MDN:以及

要输出5对,您可以执行以下操作:

String[] arr = strLine.split(",");
JSONArray array = new JSONArray();
for(int i=0, j=0;i<arr.length;i+=2,j++){
   JSONObject dataObj = new JSONObject();
   dataObj.put("c1", arr[i]);
   dataObj.put("c2", arr[i+1]);
   array.put(j, dataObj);
   if ((j > 0) && (j % 5 ==0)) {
       out.append("data: " +array.toString() + "\n");
       out.flush();
       array = new JSONArray(); // start with a new one
   }
}

要访问JavaScript中的JSON字符串,只需执行以下操作:

var myJson = JSON.parse(myJsonString);

嗨,Shusl,不,这是我的servlet中的java代码。我在servlet中以json格式编写数据,并尝试使用javascript在客户端读取数据。希望我回答了你的问题:)首先我应该有,谢谢你!见鬼?只要使用一个库。你能使用类似于
socketiojava
的东西来突发发送数据吗?因为,客户机不能自发地从服务器获得数据,他们必须向服务器请求数据。否则,为什么要用java编写自己的JSON输出类?如果你找不到,试试这些家伙:没有必要使用你自己可怜的JSON发射器。不要手工编写JSON,使用一个不会直接回答问题的库。充其量只是一个评论。我告诉他在客户端使用
JSON.parse
。这怎么不能回答这个问题呢?我同意jcolebrand的观点。你至少应该为Java提供一个例子,否则,应该是一个评论,在你改进它之后,我会收回我的反对票。你甚至没有提出问题,你只是在寻找获得代表的最快方法。是的,他确实应该使用JSON。他现在如何一次将这5个信息传递给客户?他如何使用您建议的库在Java中正确生成?他如何正确地只从Java返回JSON?他如何处理那些他想在开始时放入的小数据:[?从技术上讲,
数据:[…]
会起作用,它会在远端被接收到,
“[…]”
,然后就可以解析了。
source.addEventListener('message', function(e) {
    var data = JSON.parse(e.data); // data is an array of {c1:...,c2:...} objects
    for (var i = 0; i < data.length; i++) { // it should be 5 in length
        console.log('c1 is: '+data[i].c1+' and c2 is '+data[i].c2);
    }
}
var myJson = JSON.parse(myJsonString);