From 79fb3cb42bb9b3aafd4bcd37a419ac891d9dc00b Mon Sep 17 00:00:00 2001 From: alterdekim Date: Tue, 9 Jul 2024 03:21:12 +0300 Subject: [PATCH] json parsing fix 5 --- src/main/resources/static/javascript/game.js | 44 ++++++++++++++------ 1 file changed, 31 insertions(+), 13 deletions(-) diff --git a/src/main/resources/static/javascript/game.js b/src/main/resources/static/javascript/game.js index aa43c0d..7f80b23 100644 --- a/src/main/resources/static/javascript/game.js +++ b/src/main/resources/static/javascript/game.js @@ -77,6 +77,24 @@ function sendMessage(message, type) { })); } +function jsonParseFixer(data) { + if( (typeof data) == "object" ) { + if(data.length != undefined && data.length == 2 && typeof (data[0]) == "string" && data[0].startsWith("com.alterdekim.")) { // array + data = jsonParseFixer(data[1]); + } else if(data.length != undefined) { + for(let i = 0; i < data.length; i++) { + data[i] = jsonParseFixer(data[i]); + } + } else { // object + let k = Object.keys(data); + for( let i = 0; i < k.length; i++ ) { + data[k] = jsonParseFixer(data[k]); + } + } + } + return data; +} + $(document).ready(function() { let chips = []; $(".chip").each(function() { @@ -94,7 +112,7 @@ $(document).ready(function() { socket.onmessage = function(e) { //console.log('message', e.data); - showMessage(JSON.parse(e.data)[1]); + showMessage(jsonParseFixer(JSON.parse(e.data))); }; socket.onclose = function() { @@ -108,25 +126,25 @@ function showMessage(message) { console.log(message.body); switch(message.type) { case 'PlayersList': - parsePlayersList(JSON.parse(message.body)[1]); + parsePlayersList(JSON.parse(message.body)); break; case 'BoardGUI': - parseBoardGUI(JSON.parse(message.body)[1]); + parseBoardGUI(JSON.parse(message.body)); break; case 'ChangeBoardTileState': - changeBoardState(JSON.parse(message.body)[1]); + changeBoardState(JSON.parse(message.body)); break; case 'AssignChip': - assignChip(JSON.parse(message.body)[1]); + assignChip(JSON.parse(message.body)); break; case 'ChipMove': - chipMove(JSON.parse(message.body)[1]); + chipMove(JSON.parse(message.body)); break; case 'PlayerColor': - playerColor(JSON.parse(message.body)[1]); + playerColor(JSON.parse(message.body)); break; case 'ShowDialog': - showDialog(JSON.parse(message.body)[1]); + showDialog(JSON.parse(message.body)); break; } } @@ -294,35 +312,35 @@ function changeBoardState(body) { function parseBoardGUI(body) { let t_html = ''; for( let i = 0; i < body.top.length; i++ ) { - let board_tile = body.top[i][1]; + let board_tile = body.top[i]; t_html += '
'+board_tile.cost+'
'+board_tile.stars+'
'; } $("#top_board_tiles").replaceWith(t_html); let r_html = ''; for( let i = 0; i < body.right.length; i++ ) { - let board_tile = body.right[i][1]; + let board_tile = body.right[i]; r_html += '
'+board_tile.cost+'
'+board_tile.stars+'
'; } $("#right_board_tiles").replaceWith(r_html); let b_html = ''; for( let i = 0; i < body.bottom.length; i++ ) { - let board_tile = body.bottom[i][1]; + let board_tile = body.bottom[i]; b_html += '
'+board_tile.stars+'
'+board_tile.cost+'
'; } $("#bottom_board_tiles").replaceWith(b_html); let l_html = ''; for( let i = 0; i < body.left.length; i++ ) { - let board_tile = body.left[i][1]; + let board_tile = body.left[i]; l_html += '
'+board_tile.cost+'
'+board_tile.stars+'
'; } $("#left_board_tiles").replaceWith(l_html); let corners = $(".corner"); for(let i = 0; i < body.corners.length; i++ ) { - $(corners[i]).find("img").attr("src", body.corners[1][i][1].img); + $(corners[i]).find("img").attr("src", body.corners[i].img); } resizeTable(); }