【问题标题】:How to process JSON coming from a android in nodejs如何在nodejs中处理来自android的JSON
【发布时间】:2018-12-21 10:16:05
【问题描述】:

如何在nodejs中处理来自android的JSON

我正在使用 express 在节点中构建 rest API。我的 API 被 Web 客户端和 Android 使用。来自android的数据以这种形式出现

"{\"info\":\"abc\"}" 

并且从反应应用程序以这种形式出现

{ info:"abc"} 

所以它的解决方案是什么,我搜索它但没有找到任何东西。并告诉我在其余 API 中交换数据的更好方法是什么。

我尝试过的。

当我使用 JSON.parse 时,它​​可以在 android 上正常工作,但它通过错误

SyntaxError: Unexpected token o in JSON at position 1   

如果我使用 JSON.stringify 从 React 应用程序发送数据,则会出现此错误

Cannot convert object to primitive value

【问题讨论】:

  • 安卓使用JSON.parse("{\"info\":\"abc\"}")
  • 是的,我试过了。然后与andriod一起工作正常。但对于我的反应应用程序它通过错误
  • 由于您从不同的来源获得不同的格式,因此只使用 if 子句或三元或其他东西是有意义的。 if ( android ) data = JSON.parse(???) else if (react) data = ???;
  • 根据您的性能需要有多好,您甚至可以使用let jsonValue; try { jsonValue = JSON.parse(data) } catch (err) { jsonValue = data} 或更简单/更好的性能:jsonValue = typeof data === 'string' ? JSON.parse(data) : data

标签: javascript node.js reactjs rest express


【解决方案1】:

您正在接收一个 JSON 字符串,只需使用 JSON.parse(),如下所示:

const object = JSON.parse(your_JSON_string)

编辑:既然你后来改变了问题,如果你得到一个

SyntaxError: JSON 中位置 1 的意外标记 o

它(可能)意味着您已经有了一个对象,无需调用JSON.parse()

关于尝试从 React 应用发送数据时遇到的错误,您需要将请求中的 content-type 标头设置为正确的内容类型。

我的建议是在运行任何解析之前尝试快速进行类型检查,类似于:

function getOrParseObject(your_received_object){
    if(typeof(your_received_object) === 'string') {
        // It's a string, should be parsed, so:
        return JSON.parse(your_received_object)
    } else if (typeof(your_received_object) === 'object'){
       // It's already an object, no need to parse it
       return your_received_object
    }
}

【讨论】:

  • 如果它不使用 JSON.parse 它通过我的 Andriod 错误。但它适用于反应,反之亦然。
  • @osama 再次编辑
猜你喜欢
  • 1970-01-01
  • 2020-06-22
  • 2013-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-18
相关资源
最近更新 更多