JS中如何把JSON格式的字符串转化为一个对象或数组呢?

我记得当我们第一次学习编程时,我们的老师要求我们使用 eval() 来解析 JSON 字符串。
当时我觉得这真的很酷,我可以用一行代码来完成。
那一年是2 01 8 年,在学校机房,eval('({"name":"张三"})');它出现在屏幕上,老师告诉我打印出名称值。
我兴奋地输入console.log(eval('({"name":"张三"})').name); “张三”出现了,全班鼓掌。
但老师说这就像一颗定时炸弹。
后来我们了解到,如果该字符串被恶意构造,则可以执行任意代码。
等等,还有一件事。
我见过使用 eval() 来解析用户输入的 JSON 的项目。
据此,黑客利用此直接执行命令删除服务器上的文件。
2 02 0年,我在一家初创公司工作。
我损失惨重,老板一夜之间掉头发了。
现在回想起来,JSON.parse() 又多了一行,但至少让人感觉舒服。
与烹饪一样,油炸速度更快,但不如蒸健康。
但我突然想到,如果我可以像我自己服务器上的数据一样信任 JSON 字符串本身,那么 eval() 是否仍然有用。
归根结底,代码是一种工具,关键是如何使用它。
但谁能保证这些数据1 00%安全呢?

如何使用循环将数组转换为 JSON 对象?

是的,是的,我曾经将数组转换为 JSON 对象。
2 02 2 年了,我还在某城市的一家公司做前端,一直出现这个问题。

也就是说,你首先创建一个空对象和一个空壳。
然后,老老实实用循环遍历数组。
将数组中的每个元素视为键,然后找到与其匹配的值。
什么是值得的?这取决于。

例如,您有两个数组,一个用于存储键,一个用于存储值。
像这样,你会看到: javascript var arr = ['a', 'b', 'c']; var brr = ['1 ', '2 ', '3 ']; var obj = {}; for (var i = 0; i < arr xss=clean>你看,arr是键,brr是对应的值。
循环运行它,它将存储在 obj 中。

或者,您有一个包含混合键和值的数组。
像这样: javascript var arr = ['a', '1 ', 'b', '2 ', 'c', '3 ']; var obj = {}; for (var i = 0; i < arr xss=clean xss=clean>这是在步骤2 中传递的,其中前一个是键,下一个是值。

但是请注意,两个数组的长度必须匹配,否则obj中会出现未定义的值,这样就不好了。
键通常是一个字符串,值可以是任何内容。
数字、字符串和布尔值都可以。

现在我们用let和const代替var,作用域控制更好。
请参阅此完整示例:

<head> <title>将数组转换为 JSON 对象的示例</title> </头> <正文> <脚本> // 案例1 var arr1 = ['a', 'b', 'c']; var brr1 = ['1 ', '2 ', '3 ']; var obj1 = {}; for (var i = 0; i < arr1 xss=clean> // 情况 2 的示例 var arr2 = ['a', '1 ', 'b', '2 ', 'c', '3 ']; var obj2 = {}; for (var i = 0; i < arr2 xss=clean xss=clean> </正文> </>
您在浏览器中运行它,控制台将获得结果。
{'a': '1 ', 'b': '2 ', 'c': '3 '},很清楚。

第一次做的时候我很困惑。
然后我意识到就是这样。
也许我反应过度了,认为这很容易,但有些人可能会挣扎很长时间。
嗨,无论如何,克服它吧。

json怎么转数组 java对象

我记得上次我在酒吧时,坐在我旁边的那个人正在电脑前挠头。
屏幕上充满了混乱的 JSON 数据。
他抬起头问我:“你怎么把这个东西转成Java数组呢?”我边说边拿起笔和纸开始画图,最后使用 json-simple 来完成。

其实关键包括三步:首先打开一个叫JSON的“粽子”,提取里面的“馅料”,然后插入到Java数组中。
例如,在此示例中,假设我们在 2 02 3 年 5 月 1 0 日下午 3 :00 获得以下 JSON:
json { “数据”:[“苹果”,“香蕉”,“橙子”]
使用 json-simple 将其转换为字符串数组。
代码如下所示:
java JSONParser 解析器 = new JSONParser(); JSONObject jsonObject = (JSONObject) parser.parse(jsonStr); JSONArray jsonArray = (JSONArray) jsonObject.get("数据"); String[] 水果 = new String[jsonArray.size()]; for (int i = 0; i < jsonArray xss=clean> 这里有一个小陷阱:如果 JSON 中混合了复杂的对象,例如带有属性的 {"name":"Apple","price":5 .5 } ,则需要应用另一个级别的分析来将 JSONObject 转换为自定义类。
哥哥上次只是忘记了这一步,结果数组全为空。

等等,还有一件事:如果JSON结构特别大,比如嵌套数组,那么遍历时可能会出现超时。
我建议使用递归解析或切换到更高效的库,例如 Gson。
例如,使用Gson,您可以通过一行代码来完成此操作:
java List list = gson.fromJson(jsonStr, TypeToken.getParameterized(List.class, String.class).getType()); String[] array = list.toArray(new String[0]);
不过话说回来,为什么我们需要转换数组呢?直接使用JSONArray不是更好吗?有时业务需求很奇怪,您需要将它们分解为基本类型。
这真是“巧妇难为无米之炊”。

突然我想到,如果JSON格式发生变化,比如今天转为字符串,明天转为对象,这样的转换是不是应该使用动态代理呢?但这又意味着进入设计模式的深渊......