Javascript nodejson到客户端处理 我有一个C++和java的完全工作的VPS媒体服务器,允许设备(英特尔和Android)播放视频播放列表并即时更新。
我还用Java编写了一个设备管理器,使用标准UI。这就是问题所在,它在移动设备上不起作用 所以,我已经开始在NodeJS服务器上工作,使用“socket.io”和“net”。到目前为止一切正常。节点服务器与Java服务器连接,Java服务器将其库转换为JSON字符串,节点服务器(显然)获得正确的数据。至少这是控制台日志上显示的内容 我遇到的问题是,当客户端浏览器接收到这些数据时,我被卡住了 服务器设置为:Javascript nodejson到客户端处理 我有一个C++和java的完全工作的VPS媒体服务器,允许设备(英特尔和Android)播放视频播放列表并即时更新。,javascript,node.js,Javascript,Node.js,我还用Java编写了一个设备管理器,使用标准UI。这就是问题所在,它在移动设备上不起作用 所以,我已经开始在NodeJS服务器上工作,使用“socket.io”和“net”。到目前为止一切正常。节点服务器与Java服务器连接,Java服务器将其库转换为JSON字符串,节点服务器(显然)获得正确的数据。至少这是控制台日志上显示的内容 我遇到的问题是,当客户端浏览器接收到这些数据时,我被卡住了 服务器设置为: Java-设备服务器(在其自己的端口上) Java-设备管理器(自己的端口) C++-
private void get_videos(BufferedReader br, BufferedWriter bw)
throws IOException {
//bw.write("[{name:'Carl'}]");
//bw.flush();
JSONArray media = new JSONArray();
synchronized (dev_server2.deviceServer_Main.library.media_lock) {
JSONArray areaArray = new JSONArray();
for (Area area : dev_server2.deviceServer_Main.library.media) {
//JSONObject newArea = new JSONObject();
//newArea.put("area", area.name);
//areaArray.put(newArea);
areaArray.put(area.name);
JSONArray catArray = new JSONArray();
for (Category cat : area.category) {
catArray.put(cat.name);
JSONArray vidArray = new JSONArray();
for (VideoFile vid : cat.videos) {
JSONObject vidObject = new JSONObject();
vidObject.put("name", vid.name);
vidObject.put("description", vid.description);
vidObject.put("watershed", vid.watershed);
vidArray.put(vidObject);
}
catArray.put(vidArray);
}
areaArray.put(catArray);
}
media.put(areaArray);
bw.write(areaArray.toString());
}
//bw.write(areaArray.toString());
bw.flush();
}
在接收数据并正确记录数据的节点端:
const global = require("../global/global.js");
const node_port = 2000;
function dm_get_videos(socket) {
videos = [];
client = new global.net.Socket();
client.connect({port: node_port, host: 'localhost'},
function() {
console.log("dm_get_videos");
client.write("get_videos\n");
});
client.on("data", function(data) {
console.log("TCP socket data: " + data);
socket.emit("get_videos", data);
//socket.emit("get_videos", JSON.stringify(data));
});
client.on("end", function() {
console.log("TCP socket disconnected");
});
client.on("error", function() {
console.log("ERROR: getting videos");
});
}
module.exports = {
get_videos : dm_get_videos
};
这将在控制台日志中给出输出:(我将在编辑中整理)
在客户端(浏览器),我被卡住了
socket get_videos: [object ArrayBuffer]
landing.js:145 data: 20
VM1960:1 Uncaught SyntaxError: Unexpected token o in JSON at position 1
at JSON.parse (<anonymous>)
at r.<anonymous> (landing.js:146)
at r.emit (index.js:83)
at r.onevent (index.js:83)
at r.onpacket (index.js:83)
at r.<anonymous> (index.js:83)
at r.emit (index.js:83)
at r.ondecoded (index.js:83)
at a.<anonymous> (index.js:83)
at a.r.emit (index.js:83)
如果有人能帮助我在客户端处理这些数据,那就太好了。我还尝试将其作为原始数据发送并转换回原始数据。我习惯于使用C++和java。我经常使用Javascript和JSON,但我现在不知道如何访问这个数组
提前谢谢
编辑1:JSON数据的输出
[
"Home",
[
"Home",
[
{
"watershed": false,
"name": "Runcorn-TheUnion-FridayNEW.mp4",
"description": ""
},
{
"watershed": false,
"name": "Runcorn-TheUnion-LADIESdartsNEW.mp4",
"description": ""
},
{
"watershed": false,
"name": "Runcorn-TheUnion-MondayDominoesNEW.MP4",
"description": ""
},
{
"watershed": false,
"name": "Runcorn-TheUnion-Pool.mp4",
"description": ""
},
{
"watershed": false,
"name": "Runcorn-TheUnion-SaturdayKaraokeNEW.mp4",
"description": ""
},
{
"watershed": false,
"name": "Runcorn-TheUnion-SkySportsNEW.mp4",
"description": ""
},
{
"watershed": false,
"name": "Runcorn-TheUnion-SundayBingoNEW.mp4",
"description": ""
},
{
"watershed": false,
"name": "Runcorn-TheUnion-TuesdayUnionNEW.mp4",
"description": ""
},
{
"watershed": false,
"name": "Runcorn-TheUnion-WednesdayQuizNEW.mp4",
"description": ""
},
{
"watershed": false,
"name": "Runcorn-TheUnion-WelcomeUnion.mp4",
"description": ""
}
]
]
]
console.log(res)的输出;显示:
编辑2:在托马拉克的帮助下(干杯伙伴)
现在,我使用
console.log(new TextDecoder().decode(res));
如何遍历上述数据?我只使用基本的JSON数据,而不使用JSON中的多嵌套数组。java和C++很好,但是这个??/p>代码>意外令牌O/< >这通常发生在一个对象被用作字符串时,所以输出是代码> [object object ] < /Cord>这是无效的JSONnote…<代码>数据=”;数据+=res只是
data=”“+res
这很可能就是问题所在socket.emit(“get_videos”,JSON.stringify(data))代码>-您的数据已经是JSON。再次将其放在JSON.stringify()上是一个错误。目前,至少我得到了一个对象。我知道的意外令牌错误。我现在需要实际解析数据本身,这是我很难做到的。我将尝试整理JSON字符串,我认为这将有助于解决我的问题。(只是想找一个像样的编辑器来做)@Tomalak使用console.log(newtextdecoder().decode(res))到目前为止,code>已经完成了这个任务。现在开始解析数据。该死的。。。资料来源:
[
"Home",
[
"Home",
[
{
"watershed": false,
"name": "Runcorn-TheUnion-FridayNEW.mp4",
"description": ""
},
{
"watershed": false,
"name": "Runcorn-TheUnion-LADIESdartsNEW.mp4",
"description": ""
},
{
"watershed": false,
"name": "Runcorn-TheUnion-MondayDominoesNEW.MP4",
"description": ""
},
{
"watershed": false,
"name": "Runcorn-TheUnion-Pool.mp4",
"description": ""
},
{
"watershed": false,
"name": "Runcorn-TheUnion-SaturdayKaraokeNEW.mp4",
"description": ""
},
{
"watershed": false,
"name": "Runcorn-TheUnion-SkySportsNEW.mp4",
"description": ""
},
{
"watershed": false,
"name": "Runcorn-TheUnion-SundayBingoNEW.mp4",
"description": ""
},
{
"watershed": false,
"name": "Runcorn-TheUnion-TuesdayUnionNEW.mp4",
"description": ""
},
{
"watershed": false,
"name": "Runcorn-TheUnion-WednesdayQuizNEW.mp4",
"description": ""
},
{
"watershed": false,
"name": "Runcorn-TheUnion-WelcomeUnion.mp4",
"description": ""
}
]
]
]
[object ArrayBuffer]
console.log(new TextDecoder().decode(res));