【JAVA基础】浅谈JSON这种数据格式

JSON是AJAX中的X(就是可以取代XML) ——出自JSON创始人

json是一种数据格式。但是JSONObject类常见使用的有两种。
一、net.sf.json.JSONObject
该种需要很多关联jar包,详情参阅如下链接

http://blog.csdn.net/salonzhou/article/details/36682981

二、org.json.JSONObject
以下我们的代码例子中使用的方法都是基于这种JSONObject。

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。
形如这样的数据格式↓

//↓ 不包含json对象数组
{
   "SendTransCode":"MELEGenerateRand",  
   "ChannelHeadRequest":{
      "ChannelId":"11",
      "ChannelDate":"20160511",
      "ChannelJnlNo": "6a6a1cbe458444108f85bb8530b6fe32"
    }
   "RandType":"1",
   "EProtocolAcNo":"111111111111111111"
}

//↓ 包含json对象数组
{
   "SendTransCode": "MELEGenerateRand",  
   "ChannelHeadRequest": [   
      {"ChannelId":"11"},
      {"ChannelDate":"20160511"},
      {"ChannelJnlNo":"6a6a1cbe458444108f85bb8530b6fe32"}
    ],
   "RandType":"1",
   "EProtocolAcNo":"111111111111111111"
}
  • 数据在键值对中
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组

讨论完结构。我们来看看JSON格式的数据是如何通过java代码组装的吧。
首先需要 org.json的包

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class TestJSON {
     public static void main(String[] args) throws JSONException {
            JSONObject member1 = new JSONObject();  
            member1.put("loginname", "zhangfan");  
            member1.put("password", "userpass");  
            member1.put("email","10371443@qq.com");  
            member1.put("sign_date", "2007-06-12");  

            JSONObject member2 = new JSONObject();  
            member2.put("loginname", "zf");  
            member2.put("password", "userpass");  
            member2.put("email","8223939@qq.com");  
            member2.put("sign_date", "2008-07-16");  

            JSONArray jsonMembers = new JSONArray(); 
            jsonMembers.put(member1);  
            jsonMembers.put(member2);  

            JSONObject json=new JSONObject();  
            json.put("users", jsonMembers); //将json数组作为"json"这个json对象"users"这个key对应的value.

            System.out.println(json);
    }
}

以上比较简单就不在赘述。

那么如何解析json格式的数据呢,从复杂的json格式中去到自己想要的value.
下面的代码我们讨论的是在json格式或者内容已知的情况下的解析

String jsonString = "{\"users\":[{\"loginname\":\"zhangfan\",\"password\":\"userpass\",\"email\":\"10371443@qq.com\"},"
                + "{\"loginname\":\"zf\",\"password\":\"userpass\",\"email\":\"822393@qq.com\"}]}";

        JSONObject jsonO = new JSONObject(jsonString);
        JSONArray users = jsonO.getJSONArray("users");   //获取json对象中
        for(int i=0;i<users.length();i++){
            JSONObject user = (JSONObject)users.get(i);
            String name = (String)user.get("loginname");
            System.out.print(name+ "  ");
        }

如果JSON格式未知,那么就不能这样来玩了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java可以通过使用第三方库如 Jackson、Gson、Fastjson等来解析复杂的JSON格式数据。 首先,我们需要将JSON数据转换为Java对象。可以通过以下方式实现: 1. 使用Jackson库: ```java ObjectMapper objectMapper = new ObjectMapper(); MyObject obj = objectMapper.readValue(jsonString, MyObject.class); ``` 2. 使用Gson库: ```java Gson gson = new Gson(); MyObject obj = gson.fromJson(jsonString, MyObject.class); ``` 3. 使用Fastjson库: ```java MyObject obj = JSON.parseObject(jsonString, MyObject.class); ``` 其中,`jsonString`是包含JSON数据的字符串,`MyObject`是自定义的Java类,其属性与JSON数据的字段对应。 如果JSON数据结构复杂,包含多层嵌套或数组等情况,可以使用以下方法来获取需要的数据: 1. 对于嵌套的JSON对象,在获取Java对象后,可以通过点操作符或getter方法来访问嵌套的属性和值。 2. 对于嵌套的JSON数组,可以使用循环遍历每个元素,并将其转换为Java对象。 例如,假设我们有以下的JSON数据: ```json { "name": "Alice", "age": 25, "address": { "street": "123 Main St", "city": "New York" }, "friends": [ {"name": "Bob", "age": 30}, {"name": "Charlie", "age": 28} ] } ``` 我们可以定义以下的Java类来表示该数据结构: ```java public class Address { private String street; private String city; // getters and setters } public class Friend { private String name; private int age; // getters and setters } public class Person { private String name; private int age; private Address address; private List<Friend> friends; // getters and setters } ``` 然后,我们可以通过以下代码来解析JSON数据并获取需要的值: ```java // 解析JSON数据 Person person = objectMapper.readValue(jsonString, Person.class); // 获取属性值 String name = person.getName(); int age = person.getAge(); String street = person.getAddress().getStreet(); String city = person.getAddress().getCity(); List<Friend> friends = person.getFriends(); // 遍历friends数组 for (Friend friend : friends) { String friendName = friend.getName(); int friendAge = friend.getAge(); // 进行其他操作 } ``` 通过以上步骤,我们就可以轻松地解析复杂的JSON格式数据并获取需要的值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值