如何从JSON自动生成带序号LatLng变量并批量生成代码行?
嘿,我来帮你搞定这两个批量生成代码的需求,分两种场景给你实用方案:
一、自动复制代码行并依次命名为name1、name2...
这里有两种简单的实现方式,看你更习惯哪种:
方法1:用代码编辑器的批量操作(VS Code/Sublime Text通用)
- 先写好第一行基准代码:
LatLng name1 = new LatLng(6.3490548, -75.5580200); - 选中这行,按
Ctrl+Shift+D(Windows/Linux)或Cmd+Shift+D(Mac)复制出你需要的行数 - 用多光标选中所有的
name1:- VS Code:按
Ctrl+F搜索name1,然后按Alt+Enter选中所有匹配项 - Sublime Text:按
Ctrl+D多次选中所有name1
- VS Code:按
- 接下来给序号递增:
- VS Code:安装「Increment Selection」插件后,选中所有数字部分,按
Ctrl+Alt+N就能自动从1开始递增 - 原生操作:也可以用列编辑模式,按住
Alt(Windows/Linux)或Option(Mac)拖动鼠标选中所有数字,然后输入1,接着往下拉鼠标,编辑器会自动帮你把数字依次改成2、3...
- VS Code:安装「Increment Selection」插件后,选中所有数字部分,按
方法2:用代码动态生成(适合需要大量行的情况)
如果是Java环境,直接写个小循环打印出所有代码行,复制用就行:
// 按需修改循环次数,比如生成20行 for (int i = 1; i <= 20; i++) { System.out.println("LatLng name" + i + " = new LatLng(6.3490548, -75.5580200);"); }
运行这段代码,控制台输出的内容就是你要的带序号的代码,直接复制粘贴到项目里即可。
二、从JSON数据批量生成带序号的LatLng实例
结合你提到的StringRequest(应该是Android开发场景),这里用Java解析JSON并生成代码:
步骤1:解析JSON并生成代码
假设你的JSON响应结构是这样的(包含坐标数组):
{ "locations": [ {"lat": 6.3490548, "lng": -75.5580200}, {"lat": 6.33, "lng": -75.56}, {"lat": 6.35, "lng": -75.57} ] }
在你的StringRequest的onResponse方法里添加解析逻辑,生成代码:
@Override public void onResponse(String response) { try { JSONObject jsonObj = new JSONObject(response); JSONArray locationsArray = jsonObj.getJSONArray("locations"); // 遍历数组生成带序号的LatLng代码 for (int i = 0; i < locationsArray.length(); i++) { JSONObject loc = locationsArray.getJSONObject(i); double lat = loc.getDouble("lat"); double lng = loc.getDouble("lng"); // 生成代码行并打印(或者保存到字符串里) String codeLine = "LatLng name" + (i + 1) + " = new LatLng(" + lat + ", " + lng + ");"; System.out.println(codeLine); } } catch (JSONException e) { e.printStackTrace(); } }
运行App后,Logcat里就会输出所有带name1、name2...的LatLng实例代码,直接复制用就行。
方法2:手动处理JSON文本(不需要写代码)
如果只是想快速处理JSON文本,用编辑器正则替换:
- 先把JSON里的所有坐标条目提取出来,比如每行是
{"lat":6.3490548,"lng":-75.5580200} - 打开编辑器的替换面板(
Ctrl+H),勾选正则表达式:- 查找内容:
{"lat":([\d.-]+),"lng":([\d.-]+)} - 替换内容:
LatLng nameX = new LatLng($1, $2);
- 查找内容:
- 替换后得到所有带
nameX的行,再用方法一里的多光标递增序号,把X改成1、2、3...就行。
内容的提问来源于stack exchange,提问作者Matteo
相关产品推荐
相关产品推荐

