【问题标题】:How to restructure form json data?如何重组表单json数据?
【发布时间】:2017-05-13 10:22:13
【问题描述】:

如何重组serializeArray() 返回的表单数据 到更理想的结构?

所以现在我有:

[  
   {  
      "name":"email8",
      "value":"test1@test.com"
   },
   {  
      "name":"password8",
      "value":"pass1"
   },
   {  
      "name":"email9",
      "value":"test2@test.com"
   },
   {  
      "name":"password9",
      "value":"pass2"
   },
   {  
      "name":"email10",
      "value":"test2@test.com"
   },
   {  
      "name":"password10",
      "value":"pass3"
   }
]

我希望它是:

{  
   "test1@test.com":"pass1",
   "test2@test.com":"pass2",
   "test3@test.com":"pass3"
}

我不介意这是用 PHP 还是 Javascript 完成的。 如果有帮助,这里是表格的图像:

更新: 这是我正在做的事情,可能会更好地改变:

$user = WebmailAutologinUser::find(1);
$emails = array(
"test1@test.com" => "pass1",
"test2@test.com" => "pass2",
"test3@test.com" => "pass3" );

foreach ($emails as $email => $password) {
    $user->autoLoginAccounts()->create([
        'email' => $email,
        'password' => $password
    ]);
}

它使用 eloquent 将数组插入到数据库中。

所以emailpassword 是数据库中的一列。

【问题讨论】:

  • 写自定义序列化?

标签: javascript php jquery json


【解决方案1】:

可能的方法,使用Array#reduce

var arr = [{"name":"email8","value":"test1@test.com"},{"name":"password8","value":"pass1"},{"name":"email9","value":"test2@test.com"},{"name":"password9","value":"pass2"},{"name":"email10","value":"test3@test.com"},{"name":"password10","value":"pass3"}],
    res = arr.reduce((s,a,i) => (i % 2 ? s[arr[i-1].value] = a.value : null, s), {});

    console.log(res);

【讨论】:

  • 如果你必须问你的答案是否正确,也许等一下再发布?
  • @SterlingArcher 我问 OP 是否正是他想要的,这真的很糟糕吗?等待他的回复删除/改进我的答案。反正你现在这种行为,一点用处都没有。相当具有破坏性。
  • 关闭但返回 ``` { "email8":"admin@e17pumphouse.org.uk", "password8":"pass", "email9":"hireing@e17pumphouse.org.uk ", "password9":"pass", "email10":"abdullah.seba@e17pumphouse.org.uk", "password10":"pass" } ```
  • @AbdullahSeba 在您的问题中指定您到底需要什么。我假设您正在寻找一个包含 name 属性的对象,因为它是 key,而 value 属性是 value
  • @Kinduser 我根本不想要这个名字。我希望电子邮件作为密钥,密码作为值。名字就在那里,因为这就是serializeArray() 的工作方式。和我的第二个 json 显示的一样。
【解决方案2】:
function test()
{
//alert("Hi");
var text = '[{"name":"email8","value":"admin@e17pumphouse.org.uk"},{"name":"password8","value":"pass"},{"name":"email9","value":"hireing@e17pumphouse.org.uk"},{"name":"password9","value":"pass"},{"name":"email10","value":"abdullah.seba@e17pumphouse.org.uk"},{"name":"password10","value":"pass"}]'

json = JSON.parse(text);

var result = {};

for(var i = 0; i < json.length; i++) {
    var obj = json[i];

    if(obj.name.startsWith('email')){
        key = obj.value;
      i++;
      var obj = json[i];
      if(obj.name.startsWith('password')){
        result[key] = obj.value;
      }
    }


}

console.log(result);

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-26
    • 2018-06-26
    • 2016-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-06
    • 1970-01-01
    相关资源
    最近更新 更多