【问题标题】:Parse string to json with string mixed使用字符串混合将字符串解析为 json
【发布时间】:2015-02-15 21:54:12
【问题描述】:

我想将字符串 var 解析为 json 对象,但它并非一直都是 json。如果它不是 json,我希望它按原样返回。我试过JSON.parse,但是当var是纯字符串时会报错,最后我得到JSON.parse(JSON.stringify(var)),不知道有没有办法判断一个字符串可以解析为json或不是,所以我可以保存“stingify”阶段。

【问题讨论】:

  • 你尝试过“try / catch”吗?
  • 如果不是 JSON,您知道字符串的一般格式吗?如果您绝对必须避免 JSON.parse 步骤,您可以先尝试基于检查字符串是否为这种非 JSON 格式的启发式方法。

标签: javascript json


【解决方案1】:

没有比实际解析并知道它是否有效更好的方法了。您可以使用try/catch 块来设置变量,然后返回它。

function toJSON(str) {
    var rtn;
    try { rtn = JSON.parse(str); }  // try to set it
    catch (e) { rtn = str; } // if error set it to str
    return rtn;  // finally return
}

【讨论】:

  • 再次返回捕获异常rtn = e.toString(); msg 会更有意义
  • @Girish 不会的。这不是 OP 想要的
  • 没有意义rtn = str;
  • @Girish 是的。常识并不那么普遍。
  • 这不是最优雅的答案,但似乎 try catch 是合理的答案。谢谢!
【解决方案2】:

你可以使用try/catch。如果在尝试解析时遇到异常,则表示它不是有效的 json

var victim=....;
var output;
try { 
   output = JSON.parse(victim); 
} catch (e) { 
   output = victim;
}

【讨论】:

    猜你喜欢
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多