【问题标题】:Parse text with multiple strings in brackets into arrays将括号中包含多个字符串的文本解析为数组
【发布时间】:2019-04-24 12:14:15
【问题描述】:

我在解析这样的内容时遇到问题:

{form_settings['settings']['title']: "Titulek", form_settings['settings']['description']: "Popisek formuláře...", form_settings['settings']['gdpr']: "ip", form_settings['settings']['acquisition']: "n", form_settings['settings']['style_form']: "without_border", …}

我想要类似 PHP 的东西,你可以在其中调用它

$form_settings['settings']['title']

但你不能在 javascript 中做到这一点,我想在 php 中使用类似的数组我想做类似的事情

form_settings['settings']['title']

因为它不起作用,你知道如何解析它吗?感谢您的回答!

//编辑

<div class="col-md-10 col-form-label">
  <input type="text" id="title-for-receiver" class="form-control" name="form_settings['email']['{$input_form['EMAIL']['title_for_receiver']->name}']" value={$input_form['EMAIL']['title_for_receiver']->value} />
</div>

我通过 javascript 得到了这些值

function getFormData(form){
var unindexed_array = form.serializeArray();
var indexed_array = {};

$.map(unindexed_array, function(n, i){
    indexed_array[n['name']] = n['value'];
});

return indexed_array;
}

【问题讨论】:

  • 您是在询问解析字符串还是定位嵌套数组?这看起来不像是有效的 JavaScript 语法,所以我不确定你在追求什么。
  • 我的意思是,这不是有效的 JSON。为什么不让它成为有效的 JSON?
  • 是的,我想解析它并将括号中的这些字符串保存到数组中,这些数组的命名类似于括号中的第一个字符串。因此,如果您执行类似 tihs: form_settings['settings']['title'] 的操作,您将获得一个 Titulek 字符串。
  • 我是从 html 中获得的,因为我有一个 name="form_settings['settings']['title']" 并且我是通过 javascript 获得的页,但有不同的第二个括号名称。我想像在 PHP 中那样做。
  • 如果你在 JavaScript 中使用form_settings['settings']['title'],你将只得到标题字符串。 (我不得不查找“titulek”。)

标签: javascript jquery arrays json parsing


【解决方案1】:

这不是你可以解析的。那个“解析”表示一个字符串或可以的东西。这:不能被“解析”:

  1. 它同时具有单引号 ' 和双引号 ",因此它们都无法使其成为可解析对象的字符串。
  2. 它也有没有引号的内部元素

{form_settings['settings']['title']: "Titulek", form_settings['settings']['description']: "Popisek 公式...", form_settings['settings']['gdpr']: "ip", form_settings['settings']['acquisition']: "n", form_settings['settings']['style_form']: "without_border", ...}

编辑:我添加了mythingString,并且它的解析更加明显。

也许传递一个更好的对象:

var mything = {
  "form_settings['settings']['title']": "Titulek",
  "form_settings['settings']['description']": "Popisek formuláře...",
  "form_settings['settings']['gdpr']": "ip",
  "form_settings['settings']['acquisition']": "n",
  "form_settings['settings']['style_form']": "without_border"
};

console.log(mything["form_settings['settings']['title']"]);

var mything2 = {
  form_settings: {
    settings: {
      'title': "Titulek",
      'description': "Popisek formuláře...",
      'gdpr': "ip",
      'acquisition': "n",
      'style_form': "without_border"
    }
  }
};
console.log(mything2.form_settings['settings']['title']);
console.log(mything2.form_settings.settings.title);

var mythingString = '{"form_settings[settings][title]": "Titulek",  "form_settings[settings][description]": "Popisek formuláře...", "form_settings[settings][gdpr]": "ip",  "form_settings[settings][acquisition]": "n", "form_settings[settings][style_form]": "without_border"}';

var parsedThing = JSON.parse(mythingString);
console.log(parsedThing["form_settings[settings][title]"]);

【讨论】:

  • 是的,这就是我想要从第一个“mything”到“mything2”做的事情,我想从 HTML“name”和元素 mything2.form_settings['settings'] 中获取它['title'] 将是带有标题的值。我该怎么做?
  • @Miškyns 所以,首先得到mything 你没有那个。这就是重点。
猜你喜欢
  • 2019-10-23
  • 1970-01-01
  • 1970-01-01
  • 2020-07-03
  • 1970-01-01
  • 2011-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多