【问题标题】:parsing json from textarea to api call将 json 从 textarea 解析为 api 调用
【发布时间】:2014-12-06 09:06:31
【问题描述】:

我正在尝试创建某种 json 请求/响应模拟器。这是一个与外部 api 通信的 nodejs 应用程序。

我有一个文本区域,可以在其中输入 json 代码的 sn-p,例如

 someJson = JSON.stringify({
     "z": {
          "test": "....."
     },
     "v": {
          "test2": "......"
     }
 });

并提交表单,然后将其发布到后端,然后使用该数据调用外部 api。

如何将此文本从 textarea 转换为可以在其上运行 JSON.stringify 的对象?通过仅在文本上运行 stringify,它会添加反斜杠并且不会正确删除空格。即使我要删除反斜杠和空格,它仍然是一个字符串,并且外部 api 非常严格。

更新:

添加一个 jsfiddle

http://jsfiddle.net/b5drLnnq/1/

问题是可能存在包含空格或空格的有效数据,但在删除空格或从对象的其余部分添加反斜杠的过程中会被删除。

【问题讨论】:

  • 那么他们是输入JSON,还是输入Javascript?
  • 他们输入 json 作为文本

标签: javascript jquery json node.js


【解决方案1】:

使用正则表达式获取括号之间的文本,即 JSON.stringify():

var textAreaText = $('#textarea_id').val();
var rgx = /\(([^)]+)\)/;
var match = textAreaText.match(rgx);

var someJson = JSON.stringify(match[1]);

编辑:您想要的更改

var textAreaText = $('#txtArea').val();
//changed regex to match braces        
var rgx = /\{([^)]+)\}/;        
  var match = textAreaText.match(rgx);
//match is an array
jsonmatch = match[1];
jsonmatch = jsonmatch.replace(/(\r\n|\n|\r|\t| )/gm,"");
//replace lost braces
jsonstr = JSON.stringify('{'+jsonmatch+'}');

JSFiddle:http://jsfiddle.net/sameersemna/ofjpLx57/2/

【讨论】:

  • 我得到一个空值jsfiddle.net/b5drLnnq/1 还有一点,可能有实际数据,例如包含空格的段落,但这种方法会从中删除所有空格,而不仅仅是空格从文本区域?
  • 嗨,Sameer,您编辑的版本只是返回带有 \n 和 \t's 的 json obj 并作为以 " 开头的字符串返回。我如何得到这个 {"glossary":{"title" :"示例词汇表","GlossDiv": vs. "{\n \"glossary\": {\n \"title\": \"示例词汇表\",\n\t\t\"GlossDiv\":
  • 第二版代码中不再有\n\t。现在只有一些反斜杠可以很容易地删除。但是,这只解决了我遇到的问题的一半。它从段落等好的文本中删除了空格,\"Ameta-markuplanguage,用于创建标记语言,如 DocBook。与元标记语言,用于创建标记语言,如 DocBook。您可以通过比较 textarea 内容的“json.stringify”来看到差异" 和 "json.stringify of js object" 按钮,你的用引号括起来
【解决方案2】:

使用$(<your selector).val() 获取区域文本将为您提供文本。您可以使用自己的函数清理文本并将其分配给对象并对其进行字符串化。

【讨论】:

    猜你喜欢
    • 2017-03-07
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    • 2017-01-24
    • 1970-01-01
    • 2015-11-14
    • 2012-10-31
    • 1970-01-01
    相关资源
    最近更新 更多