Код на стороне клиента (Unity. За кадром вызов метода, старт и Usings)
https://docs.unity3d.com/Manual/JSONSerialization.html уверяет что таким образом получается корректный JSON
[Serializable] public class MyClass { public int level; public float timeElapsed; public string playerName; } public IEnumerator POST() { MyClass myObject = new MyClass(); myObject.level = 1; myObject.timeElapsed = 47.5f; myObject.playerName = "Dr Charles Francis"; string json = JsonUtility.ToJson(myObject); WWWForm form = new WWWForm(); form.AddField("data", json); var www = new WWW("http://127.0.0.1:8080/server.js", form); yield return www; Debug.Log(www.text); www.Dispose(); yield break; }
Код на стороне сервера(за кадром код на старт сервера и всякие require)
function accept(req, resp) { var body = ""; req.on('data', function (chunk) { body += chunk; }); req.on('end', function () { console.log('body: ' + body); var jsonObj = JSON.parse(body); console.log(jsonObj.$ key); }) resp.end('Получили ответ от сервера ' + new Date() + req.url); }
И соответствующий результат в консоли сервера
body: data=%7b%22level%22%3a1%2c%22timeElapsed%22%3a47.5%2c%22playerName%22%3a%22Dr+Charles+Francis%22%7d undefined:1 data=%7b%22level%22%3a1%2c%22timeElapsed%22%3a47.5%2c%22playerName%22%3a%22Dr+Charles+Francis%22%7d ^ SyntaxError: Unexpected token d in JSON at position 0 at JSON.parse (<anonymous>) at IncomingMessage.<anonymous> (C:\Users\dm\nodeServer\serv\server.js:17:24) at IncomingMessage.emit (events.js:159:13) at endReadableNT (_stream_readable.js:1062:12) at process._tickCallback (internal/process/next_tick.js:152:19)
Т.е. по сообщению в консоли видно, что JSON до сервера доходит, он его даже собирает(видны куски того что мы посылали), но когда пытается выполнить JSON.Parse, что то его не устраивает.
Что я делаю не так?