解析 JSON 字符串中的嵌套对象

Posted

技术标签:

【中文标题】解析 JSON 字符串中的嵌套对象【英文标题】:Parse nested object in JSON string 【发布时间】:2022-01-08 00:53:36 【问题描述】:

我有这个代码:

let test = '"attribute_as":"plan_id","operator":"fromTo","values":""from":"70","to":"80""';
console.log(JSON.parse(test));

它当然会失败,因为在values 我有一个对象。有什么选择如何以简单的方式解析这个字符串?还是根本不可能?

最后的结果应该是:


    attribute_as: 'plan_id',
    operator: 'fromTo',
    values: 
        from: 70,
        to: 80
    

【问题讨论】:

试试这个json字符串:'"attribute_as":"plan_id","operator":"fromTo","values":"from":70,"to":80'我认为错误只是一个放错了引号 你的键值有错误,它的字符串不是一个对象,如果你想要一个字符串,你必须转义 " 内部值,或者你推迟拥有一个对象 你从哪里得到字符串?如果它来自您可以控制的来源,最简单的方法是将字符串修复为真正的 JSON。 【参考方案1】:

字符串不正确:

let err = '"attribute_as":"plan_id","operator":"fromTo","values":""from":"70","to":"80""';
// This is the original string
let pass = '"attribute_as":"plan_id","operator":"fromTo","values":"from":70,"to":80';
// Corrected string

let desiredObj = 
    attribute_as: 'plan_id',
    operator: 'fromTo',
    values: 
        from: 70,
        to: 80
    
;

console.log(JSON.stringify(desiredObj) == err);
console.log(JSON.stringify(desiredObj) == pass);

【讨论】:

【参考方案2】:

这应该可以解决问题。记录时都正确评估。

let
    test = '"attribute_as": "plan_id","operator": "fromTo","values": "from": 70,"to": 80',
    test2 = 
        attribute_as: 'plan_id',
        operator: 'fromTo',
        values: 
            from: 70,
            to: 80
        
    

console.log(JSON.parse(test));
console.log(JSON.stringify(test2));

【讨论】:

以上是关于解析 JSON 字符串中的嵌套对象的主要内容,如果未能解决你的问题,请参考以下文章

我需要从嵌套在 JSON 对象中的名为 token 的字段中解析或提取字符串,以便替换会话令牌的电子邮件和密码

用 JQuery/PHP 解析嵌套的 JSON 字符串对象?

SpringBoot Fastjson解析多层嵌套复杂Json字符串

SpringBoot Fastjson解析多层嵌套复杂Json字符串

使用包含嵌套 JSON 字符串的一列解析 Pandas DataFrame 中的列

java怎么解析多层嵌套的json得到每个元素