在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML、JSON等,而JSON是最受大家欢迎的,它采用完全独立于语言的文本格式,而这种特性使JSON成为理想的数据交换语言,并且易于人们的读写,那json数组怎么写Java?下面来我们就来给大家讲解一下。
可以创建json字符串在网上进行传输,也可以将获取到的json字符串写入到文件
1.需要创建的json数据
2.项目结构
CreateJson.java
package testcreatejson; import com.google.gson.JsonArray; import com.google.gson.JsonObject; public class CreateJson { public static void main(String[] args) { //首先要创建一个整体的json对象 JsonObject object = new JsonObject(); //1.json字符串 //add:为当前json对象添加另一个json对象;addProperty:为当前json对象直接添加属性值 object.addProperty("cat", "it"); //2.json数组 JsonArray array = new JsonArray(); JsonObject language1 = new JsonObject(); language1.addProperty("id", 1); language1.addProperty("name", "java"); language1.addProperty("ide", "Eclipse"); array.add(language1); JsonObject language2 = new JsonObject(); language1.addProperty("id", 2); language1.addProperty("name", "Swift"); language1.addProperty("ide", "Xcode"); array.add(language2); JsonObject language3 = new JsonObject(); language1.addProperty("id", 3); language1.addProperty("name", "C#"); language1.addProperty("ide", "Visual Studio"); array.add(language3); //将数组添加到Object中 object.add("languages", array); //3.布尔类型的json数值 object.addProperty("pop", true); System.out.println(object.toString()); } }
3. 运行结果截图
json数组格式是怎样的?
基础结构
JSON建构于两种结构:
1. “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
2. 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
基础示例
简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。这个字符串看起来有点儿古怪,但是 JavaScript 很容易解释它,而且 JSON 可以表示比"名称 / 值对"更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。
表示名称 / 值对
按照最简单的形式,可以用下面这样的 JSON 表示 "名称 / 值对" :{ "firstName": "Brett" }
这个示例非常基本,而且实际上比等效的纯文本 "名称 / 值对" 占用更多的空间:firstName=Brett
但是,当将多个"名称 / 值对"串在一起时,JSON 就会体现出它的价值了。首先,可以创建包含多个"名称 / 值对"的 记录,比如:
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }
从语法方面来看,这与"名称 / 值对"相比并没有很大的优势,但是在这种情况下 JSON 更容易使用,而且可读性更好。例如,它明确地表示以上三个值都是同一记录的一部分;花括号使这些值有了某种联系。
表示数组
当需要表示一组值时,JSON 不但能够提高可读性,而且可以减少复杂性。例如,假设您希望表示一个人名列表。在 XML 中,需要许多开始标记和结束标记;如果使用典型的 名称 / 值 对(就像在本系列前面文章中看到的那种名称 / 值对),那么必须建立一种专有的数据格式,或者将键名称修改为 person1-firstName这样的形式。
如果使用 JSON,就只需将多个带花括号的记录分组在一起:
{ "people": [ { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }, { "firstName": "Jason", "lastName":"Hunter", "email": "bbbb"}, { "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" } ]}
这不难理解。在这个示例中,只有一个名为 people的变量,值是包含三个条目的数组,每个条目是一个人的记录,其中包含名、姓和电子邮件地址。上面的示例演示如何用括号将记录组合成一个值。当然,可以使用相同的语法表示多个值(每个值包含多个记录):
{ "programmers": [ { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }, { "firstName": "Jason", "lastName":"Hunter", "email": "bbbb" }, { "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" } ], "authors": [ { "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" }, { "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" }, { "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" } ], "musicians": [ { "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" }, { "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" } ] }
这里最值得注意的是,能够表示多个值,每个值进而包含多个值。但是还应该注意,在不同的主条目(programmers、authors 和 musicians)之间,记录中实际的名称 / 值对可以不一样。JSON 是完全动态的,允许在 JSON 结构的中间改变表示数据的方式。
在处理 JSON 格式的数据时,没有需要遵守的预定义的约束。所以,在同样的数据结构中,可以改变表示数据的方式,甚至可以以不同方式表示同一事物。
JSON作为一个轻量级的数据格式比xml效率要高,所以作为程序员需要熟悉json的相关使用。最后大家如果想要了解更多json工具教程 知识,敬请关注奇Q工具网。
推荐阅读: