gpt4 book ai didi

javascript - 解构 JSON 对象

转载 作者:行者123 更新时间:2023-12-01 05:25:33 35 4
gpt4 key购买 nike

JSON 编码的数组从 PHP 传递到 HTML 文档。目前还不清楚如何将该数组解构为 javascript 可用的片段。例如,考虑以下 HTML:

<div id="options">{"foo":[{"id":1},{"id":3}], "bar":[{"id":2},{"id":4}]}</div>

此数组中唯一先验已知的元素是键 id存在。我知道,索引可以通过

找到
var data = JSON.parse($("#options").text());
$.each(data, function(index) {
// index will be foo & bar
});

用例是使用索引和 id 向文档中的元素添加属性。我还没有偶然发现返回与每个索引关联的 id 的技术。如何最好地做到这一点?

编辑 - 用例澄清 - 长话短说

我想根据实体的属性(在 Symfony 应用程序中)重新启用表单上的某些选项。禁用的选项无法修改,但也不会保留 - 它们的值设置为 null。我构建了一项服务来确定禁用的选项元素并将这些元素作为 JSON 对象发送到表单文档。我现在假设在创建表单之前不知 Prop 体选项。在上面的示例中,foo & bar代表可能的选项,id对应于选项。例如,Household实体可能有Reason已选择但禁用“低工资”选项(id = 3)。这将显示为 ...id="options">{"reasons":[{"id":3}]}<... 。我将使用此信息删除 disabled="disabled" Reason, id=3(即 id="household_reasons_3" )字段的复选框集中的属性。我希望这是有道理的。

根据请求编辑 #2 - 创建对象的 PHP 代码。

getMetatData()的结果出现在文档中 #options 。从上面的编辑中,家庭实体是 $object .

public function getMetaData($object) {
$data = array();
$className = get_class($object);
$metaData = $this->em->getClassMetadata($className);
foreach ($metaData->associationMappings as $field => $mapping) {
if (8 === $mapping['type']) {
$data[$field] = $this->extractOptions($object, $field);
}
}

return json_encode($data);
}

private function extractOptions($object, $field) {
$data = [];
$method = 'get' . ucfirst($field);
$itemName = substr($field, 0, -1);
$getter = 'get' . ucfirst($itemName);
$entity = $object->$method();
foreach ($entity as $item) {
if (method_exists($item, 'getEnabled') && false === $item->getEnabled()) {
$data[] = ['id' => $item->getId()];
}
}

return $data;
}

最佳答案

早在达到无限猴子极限之前,我就偶然发现了一种方法来创建我正在寻找的结果。我感谢所有要求澄清的人。所以,对于对象

{"foo":[{"id":1},{"id":3}], "bar":[{"id":2},{"id":4}] }

脚本

var data = JSON.parse($("#options").text());
var i = 0
var output = [];
$.each(data, function(index, item) {
$.each(item, function(k, v) {
output[i] = "household_" + index + "_" + v.id;
i++;
});
});
output;

产生这个:

[“household_foo_1”、“household_foo_3”、“household_bar_2”、“household_bar_4”]

我得到了我需要的字符串;我可以从这里拿走它。

关于javascript - 解构 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39985782/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com