大家好,jsonarray格式相信很多的网友都不是很明白,包括怎么解析jsonarray也是一样,不过没有关系,接下来就来为大家分享关于jsonarray格式和怎么解析jsonarray的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!
一、如何将json解析成jsonarray
1、创建JSONArray对象、JSONObject对象,通过put方法将其数据以键值对的形式填充,如例:
2、//假如有一个Java实体类Person,包括以下属性:phone、sex、married、address。
3、ArrayList<Person> persons= new ArrayList<Person>();
4、persons.add(new Person("138******67","女", true,"北京朝阳区"));//填充Java实体类集合
5、JSONArray array= new JSONArray();// Json格式的数组形式
6、JSONObject obj;//json格式的单个对象形式
7、for(int i= 0; i< persons.size(); i++){
8、obj.put("phone", persons.get(i).getPhone());//json通过put方式以key-value形式填充
9、obj.put("sex", persons.get(i).getSex());
10、obj.put("married", persons.get(i).getMarried());
11、obj.put("address", persons.get(i).getAddress());
12、array.put(obj);//将JSONObject添加入JSONArray
13、只需要创建GSON对象,通过toJson方法转换即可。如例:
14、Person person= new Person("敏敏", 23,"女","北京市海淀区");
15、//调用toJson方法即可转换为字符串的json格式
16、String json= gson.toJson(person);
二、json list格式是怎么样的
JSON的规则很简单:对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’对”之间使用“,”(逗号)分隔。
1、映射用冒号(“:)表示。名称:值
2、并列的数据之间用逗号(“,”)分隔。名称1:值1,名称2:值2
3、映射的集合(对象)用大括号(“{}”)表示。此格式对应Java中的JsonObject。标准的json可以对应一个JsonObject
下面值1,值2可以是“4”中的格式JsonArray{name:JsonArray,name:JsonArray,name:JsonArray}
4、并列数据的集合(数组)用方括号(“[]”)表示。此格式对应Java中的JsonArray
注意:json是一种格式,传输的过程中是String类型的,需要使用对应的方法把其转化成JsonObject对象或JsonArray对象。
5、元素值可具有的类型:string,number, object, array, true, false, null
注意:1、JSON用冒号(而不是等号)来赋值。每一条赋值语句用逗号分开。整个对象用大括号封装起来。可用大括号分级嵌套数据。
2、对象描述中存储的数据可以是字符串,数字或者布尔值。对象描述也可存储函数,那就是对象的方法。
(1)由key–value对组成的数据结构。这种数据结构在不同的语言中有不同的实现.
例如:在javascript中是一个对象.而在java中是一种Map结构,c语言中是struct,其它的语言中可能为record、 hash table等。
(2)有序集合、这种数据结构在不同语言中可能有list、vertor、数组和序列等实现。
三、json文件中的数据读入数组
好像不能直接打网页地址。你可以参考以下内容。
Java读写json格式的文件方法详解
一、要解决这个问题首先要知道json格式是什么?
比如学生有学号,姓名,性别等。
{"studno":"11111","studname":"wwww","studsex":"男"}(各个字段都是字符型)
[{"studno":"122222","studname":"wwww","studsex":"男"},
{"studno":"11111","studname":"xxxx","studsex":"男"},
{"studno":"33333","studname":"ssss","studsex":"男"}]
二、那如何操作json格式的文件呢?
这个更简单了,说白了就是直接读写文件,再把读出来的文件内容格式化成json就可以了。
//{"xueqi":,"xuenian":,"startTime":,"endTime":,"renshu":,"isReadDB":}
public void setXueqi(String xueqi){
public void setXuenian(String xuenian){
public void setStartTime(String startTime){
public void setEndTime(String endTime){
public void setMenshu(int menshu){
public void setIsReadDB(String isReadDB){
2.有一个json格式的文件,存的就是他的信息,如下
{"xuenian":"2007-2008","xueqi":"1","startTime":"2009-07-19 08:30","endTime":"2009-07-22 18:00","menshu":"10","isReadDB":"Y"}
public ElectSet findElectSet(String path){
ElectSet electset=new ElectSet();
String sets=ReadFile(path);//获得json文件的内容
JSONObject jo=JSONObject.fromObject(sets);//格式化成json对象
//System.out.println("------------" jo);
//String name= jo.getString("xuenian");
electset.setXueqi(jo.getString("xueqi"));
electset.setXuenian(jo.getString("xuenian"));
electset.setStartTime(jo.getString("startTime"));
electset.setEndTime(jo.getString("endTime"));
electset.setMenshu(jo.getInt("menshu"));
electset.setIsReadDB(jo.getString("isReadDB"));
public boolean setElect(String path,String sets){
// TODO Auto-generated catch block
public String ReadFile(String path){
//System.out.println("以行为单位读取文件内容,一次读一整行:");
reader= new BufferedReader(new FileReader(file));
//一次读入一行,直到读入null为文件结束
while((tempString= reader.readLine())!= null){
System.out.println("line" line":" tempString);
public void writeFile(String filePath, String sets) throws IOException{
FileWriter fw= new FileWriter(filePath);
PrintWriter out= new PrintWriter(fw);
4.调用,使用(在网站的controller里调用的)
public void GetElectSettings(HttpServletRequest request,
HttpServletResponse response) throws Exception{
ElectSet electset=new ElectSet();
String absPath= request.getRealPath("\");
String filePath= absPath"public\sets\electSets.json";
electset=businessService.findElectSets(filePath);//这里是调用,大家自己改改,我调用的业务层的。
JSONArray jsonItems= new JSONArray();
JSONObject jo=new JSONObject();
request.setCharacterEncoding("utf-8");
response.setContentType("application/json;charset=utf-8");
PrintWriter out= response.getWriter();
public void ChangeElectSet(HttpServletRequest request,
HttpServletResponse response) throws Exception{
request.setCharacterEncoding("UTF-8");
response.setContentType("text/json;charset=utf-8");
log.info("reach ChangeElectSet");
String json=(String) request.getParameter("json").trim();
ElectSet sets= new ElectSet();
JSONObject jsonObject= JSONObject.fromObject(json);
sets=(ElectSet) JSONObject.toBean(jsonObject, ElectSet.class);
if(sets.getIsReadDB()=="false"){
String changes="{"xuenian":"";//因为json的属性要用引号,所以要用"转义一下
changes=sets.getXuenian()"","xueqi":"" sets.getXueqi()"","startTime":"" sets.getStartTime()"","endTime":"" sets.getEndTime()"","menshu":"" sets.getMenshu()"","isReadDB":"" sets.getIsReadDB()""}";
String absPath= request.getRealPath("\");
String filePath= absPath"public\sets\electSets.json";
四、jquery如何解析数组(JSONArray)
ECMAScript v3规定了数组直接量的语法,JavaScript 1.2和JScript 3.0实现了它。可以把—个用逗号分隔的表达式列表放在方括号中,创建并初始化—个数组。这些表达式的值将成为数组元素。例如:
var a= [1, true,'abc'];
var myhash={”key1″:”val1″,“key2″:”val2″};//obj
myhash={key1:”val1″, key2:”val2″};//obj-也可以
ps:跟json格式几乎相同,但是json格式要求更加严格(里面的键值对必须使用双引号),但json只能作为一种格式标准,如果要对其进行操作必须转换成关联数组对象(obj)。
//添加一个新键 newkey,键值为 newval
myhash[”newkey”]=“newval”;
//删除一个键 newkey,同时,该键值对应的 newval也就消失了
{”key1″:”val1″,“key2″:”val2″};//严格按照此格式,操作可依照关联数组的操作
1.当服务器发送的数据不是一条json,而是多条json时,则应当联系数组和关联数组来组装字符串
例如:var objs= [{ id: 1, name:'n_1'},{ id: 2, name:'n_2'}];
2.至始至终服务器给客户端的数据都只是字符串,因此为了让其能够在js中对其进行必要的操作,可以通过eval()进行转换成js可执行的对象。
因此jQuey中提供的$.parseJSON()是有局限的,如果是上面1提到的这种情况则就必须使用eval()进行转换,然后再通过$.each(objs,function(i,o){...})进行操作
好了,文章到此结束,希望可以帮助到大家。