【问题标题】:How to parsing the correct values from a json decoding [duplicate]如何从json解码中解析正确的值[重复]
【发布时间】:2021-12-13 20:32:05
【问题描述】:

你好写了这个问题,因为我有一个 json 转换为一个字符串,带有一个名为 json_encode() 的 php 函数

类似这样的:

{ "data":"2","state":"false"}

当我试图编码的原始 json 是这样的:

{ "data":2,"state":false}

(请注意,变量的类型是不同的,在最初我有一个称为数据的 int 数字和称为状态的布尔值,但是当我使用 json_encode() 时,每个变量都会转到一个字符串..)

问题是当我尝试 json.PARSE() 来自 php 的 json 编码的值时,我没有得到正确的值,每个变量都是一个字符串...

例如,不是获取变量的布尔状态,而是得到“false”或“true”,这是一个问题......

有没有办法解析这个避免这个问题?基本上我的问题是当我在我的角度项目中解析 json 时,我没有得到正确类型的变量..

谢谢!

【问题讨论】:

  • 正确的 JSON 应该是:"{\"data\":2,\"state\":false}"; JSON 不处理单引号字符串。
  • 您用于对 JSON 进行编码的确切代码是什么?
  • 你能澄清你的问题吗?假设你的意思是:输入:{“数据”:2,“状态”:假}期望的输出:{“数据”:“2”,“状态”:“假”}
  • @Hollyol 就是这样,但是当我 json.parse 在角度时我没有得到真正的值,我得到的只是一个字符串,而不是作为布尔值得到假,我得到“假”为一个字符串。
  • 您可以尝试使用来自 javascript 的 JSON.stringify() 将对象作为字符串传递给 PHP 吗?我认为它可以解决问题

标签: javascript php json angular typescript


【解决方案1】:

您可以对单个值使用 JSON.parse 将其转换为所需的类型:

const oldValue = JSON.parse('{"data":"2","state":"false"}')

const result = {}

Object.keys(oldValue).forEach(key => {
  result[key] = JSON.parse(oldValue[key]);
});

反过来说:

const oldValue = JSON.parse('{"data": 2,"state": false}');

const result = {}

Object.keys(oldValue).forEach(key => {
  result[key] = oldValue[key].toString();
});

注意:这些示例假定为平面对象。如果某些值是对象,则需要递归遍历对象的树,例如 {a: {b: "c"}}。

【讨论】:

    【解决方案2】:

    这不是正确的 json 格式,我是正确的 json 格式,您必须使用双引号而不是单引号

    像这样: { "data":"2","state":"false"}

    不是这个: { '数据':'2','state':'false'}

    【讨论】:

    • 我已经用双引号更正了我的问题,但这不是我要寻找的答案:(
    猜你喜欢
    • 1970-01-01
    • 2021-01-17
    • 2021-12-19
    • 1970-01-01
    • 2018-10-09
    • 1970-01-01
    • 2017-02-11
    • 2016-06-24
    • 1970-01-01
    相关资源
    最近更新 更多