double height = 185.5345;

root.put(“height”, (double) (Math.round(height * 10) / 10.0));

JSONArray array = new JSONArray();

JSONObject major1 = new JSONObject();

major1.put(“job1”, “worker”);

major1.put(“job2”, “doctor”);

JSONObject major2 = new JSONObject();

major2.put(“job3”, “teacher”);

major2.put(“job4”, “student”);

array.add(major1);

array.add(major2);

root.put(“major”, array);

//假设位置x,y都是double型的,现在对他们取整

double x = 30.0045;

double y = 30.1123;

JSONObject houloc = new JSONObject();

houloc.put(“x”, Math.round(x));

houloc.put(“y”, Math.round(y));

root.put(“houseLocation”, houloc);

// 格式化json字符串

String jsonString = formatJson(root.toString());

// 将格式化后的字符串写入文件

Writer write = new OutputStreamWriter(new FileOutputStream(file), “UTF-8”);

write.write(jsonString);

write.flush();

write.close();

} catch (Exception e) {

e.printStackTrace();

}

}

/**

  • 返回格式化JSON字符串。

  • @param json 未格式化的JSON字符串。

  • @return 格式化的JSON字符串。

*/

public static String formatJson(String json) {

StringBuffer result = new StringBuffer();

int length = json.length();

int number = 0;

char key = 0;

// 遍历输入字符串。

for (int i = 0; i < length; i++) {

// 1、获取当前字符。

key = json.charAt(i);

// 2、如果当前字符是前方括号、前花括号做如下处理:

if ((key == ‘[’) || (key == ‘{’)) {

// (1)如果前面还有字符,并且字符为“:”,打印:换行和缩进字符字符串。

if ((i - 1 > 0) && (json.charAt(i - 1) == ‘:’)) {

result.append(‘\n’);

result.append(indent(number));

}

// (2)打印:当前字符。

result.append(key);

// (3)前方括号、前花括号,的后面必须换行。打印:换行。

result.append(‘\n’);

// (4)每出现一次前方括号、前花括号;缩进次数增加一次。打印:新行缩进。

number++;

result.append(indent(number));

// (5)进行下一次循环。

continue;

}

// 3、如果当前字符是后方括号、后花括号做如下处理:

if ((key == ‘]’) || (key == ‘}’)) {

// (1)后方括号、后花括号,的前面必须换行。打印:换行。

result.append(‘\n’);

// (2)每出现一次后方括号、后花括号;缩进次数减少一次。打印:缩进。

number–;

result.append(indent(number));

// (3)打印:当前字符。

result.append(key);

// (4)如果当前字符后面还有字符,并且字符不为“,”,打印:换行。

if (((i + 1) < length) && (json.charAt(i + 1) != ‘,’)) {

result.append(‘\n’);

}

// (5)继续下一次循环。

continue;

}

// 4、如果当前字符是逗号。逗号后面换行,并缩进,不改变缩进次数。

if ((key == ‘,’)) {

result.append(key);

result.append(‘\n’);

result.append(indent(number));

continue;

}

// 5、打印:当前字符。

result.append(key);

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

言尽于此,完结

无论是一个初级的 coder,高级的程序员,还是顶级的系统架构师,应该都有深刻的领会到设计模式的重要性。

  • 第一,设计模式能让专业人之间交流方便,如下:

程序员A:这里我用了XXX设计模式

程序员B:那我大致了解你程序的设计思路了

  • 第二,易维护

项目经理:今天客户有这样一个需求…

程序员:明白了,这里我使用了XXX设计模式,所以改起来很快

  • 第三,设计模式是编程经验的总结

程序员A:B,你怎么想到要这样去构建你的代码

程序员B:在我学习了XXX设计模式之后,好像自然而然就感觉这样写能避免一些问题

  • 第四,学习设计模式并不是必须的

程序员A:B,你这段代码使用的是XXX设计模式对吗?

程序员B:不好意思,我没有学习过设计模式,但是我的经验告诉我是这样写的

image

从设计思想解读开源框架,一步一步到Spring、Spring5、SpringMVC、MyBatis等源码解读,我都已收集整理全套,篇幅有限,这块只是详细的解说了23种设计模式,整理的文件如下图一览无余!

image

搜集费时费力,能看到此处的都是真爱!
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
步一步到Spring、Spring5、SpringMVC、MyBatis等源码解读,我都已收集整理全套,篇幅有限,这块只是详细的解说了23种设计模式,整理的文件如下图一览无余!

[外链图片转存中…(img-YoB9igxx-1713757681294)]

搜集费时费力,能看到此处的都是真爱!
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e 4 个月前
8c391e04 7 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐