jsonarray格式(怎么解析jsonarray)

admin 166 0

大家好,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){...})进行操作

好了,文章到此结束,希望可以帮助到大家。