写法和 google的json类解析json类似, 贴出来做一个备份:
import org.apache.commons.lang.StringUtils; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.xuele.bigdata.xetl.model.ActionLogInfo; import com.xuele.bigdata.xetl.model.Constant; public class JsonParseUtil { private static Logger logger= LoggerFactory.getLogger(JsonParseUtil.class); private static String dataObjKey = "data"; public static ActionLogInfo parseActionJson(String jsonStr){ try { JSONObject jsonObj; try { jsonObj = new JSONObject(jsonStr); } catch (JSONException e) { logger.error("----"+jsonStr); logger.error("", e); return null; } int actId=jsonObj.getInt(Constant.ACTID); String module=""; if(jsonObj.has(Constant.MODEL)){ module=jsonObj.getString(Constant.MODEL); } String ip=""; if(jsonObj.has(Constant.IP)){ ip=jsonObj.getString(Constant.IP); } String countyId=""; if(jsonObj.has(Constant.COUNTYID)){ countyId=jsonObj.getString(Constant.COUNTYID); } String countyName=""; if(jsonObj.has(Constant.COUNTYNAME)){ countyName=jsonObj.getString(Constant.COUNTYNAME); } int originCode=jsonObj.getInt(Constant.ORIGINCODE); String role=jsonObj.getString(Constant.ROLE); String schoolId=""; if(jsonObj.has(Constant.SCHOOLID)){ schoolId=jsonObj.getString(Constant.SCHOOLID); } String schoolName=""; if(jsonObj.has(Constant.SCHOOLNAME)){ schoolName=jsonObj.getString(Constant.SCHOOLNAME); } long time=0; if(jsonObj.has(Constant.TIME)){ time=jsonObj.getLong(Constant.TIME); } //String userIcon=jsonObj.getString(Constant.USERICON); String userIcon=""; if(jsonObj.has(Constant.USERICON)) userIcon=jsonObj.getString(Constant.USERICON); String userId=jsonObj.getString(Constant.USERID); String userIp=jsonObj.getString(Constant.USERIP); String userName=""; if(jsonObj.has(Constant.USERNAME)){ userName=jsonObj.getString(Constant.USERNAME); } String provinceId=""; if(jsonObj.has(Constant.PROVINCEID)){ provinceId=jsonObj.getString(Constant.PROVINCEID); } String provinceName=""; if(jsonObj.has(Constant.PROVINCENAME)){ provinceName=jsonObj.getString(Constant.PROVINCENAME); } String cityId=""; if(jsonObj.has(Constant.CITYID)){ cityId=jsonObj.getString(Constant.CITYID); } String cityName=""; if(jsonObj.has(Constant.CITYNAME)){ cityName=jsonObj.getString(Constant.CITYNAME); } //新增班级ID,班级名称,年级ID ADD BY WHH 2017-05-26 String className = ""; if(jsonObj.has(Constant.CLASSNAME)){ className=jsonObj.getString(Constant.CLASSNAME); } String classId = ""; if(jsonObj.has(Constant.CLASSID)){ classId=jsonObj.getString(Constant.CLASSID); } String gradeId = ""; if(jsonObj.has(Constant.GRADEID)){ gradeId=jsonObj.getString(Constant.GRADEID); } JSONObject dataObj=jsonObj.getJSONObject(dataObjKey); String postId=""; if(dataObj.has(Constant.POSTID)){ postId=dataObj.getString(Constant.POSTID); } int postType=0; if(dataObj.has(Constant.POSTTYPE)){ // postType=dataObj.getString(Constant.POSTTYPE); if(StringUtils.isEmpty(dataObj.get(Constant.POSTTYPE).toString())){ postType=-1; }else{ postType=Integer.parseInt(dataObj.get(Constant.POSTTYPE).toString()); } } String beUserId = ""; // if(dataObj.has("praiseUserId")){//praisedUserId // beUserId=dataObj.get("praiseUserId").toString(); // }else if(dataObj.has("beCommentUserId")){//beCommentUserId beUserId=dataObj.get("beCommentUserId").toString(); }else if(dataObj.has("praisedUserId")){ beUserId=dataObj.getString("praisedUserId"); } String beUserName = ""; if(dataObj.has("praisedUserName")){//praisedUserName beUserName=dataObj.get("praisedUserName").toString(); }else if(dataObj.has("beCommentUserName")){//beCommentUserName beUserName=dataObj.get("beCommentUserName").toString(); } String beUserRoleId = ""; if(dataObj.has("praisedUserRoleId")){ beUserRoleId=dataObj.get("praisedUserRoleId").toString(); }else if(dataObj.has("beCommentUserRoleId")){ beUserRoleId=dataObj.get("beCommentUserRoleId").toString(); } String beUserIcon = ""; if(dataObj.has("praisedUserIcon")){ beUserIcon=dataObj.get("praisedUserIcon").toString(); }else if(dataObj.has("beCommentUserIcon")){ beUserIcon=dataObj.get("beCommentUserIcon").toString(); } String beUserCountyId = ""; if(dataObj.has("praisedUserCountyId")){ beUserCountyId=dataObj.getString("praisedUserCountyId"); }else if(dataObj.has("beCommentUserCountyId")){ beUserCountyId=dataObj.getString("beCommentUserCountyId"); } String subjectId = ""; if(dataObj.has(Constant.SUBJECTID)){ subjectId=dataObj.getString(Constant.SUBJECTID); } String subjectName = ""; if(dataObj.has(Constant.SUBJECTNAME)){ subjectName=dataObj.getString(Constant.SUBJECTNAME); } String unitId = ""; if(dataObj.has(Constant.UNITID)){ unitId=dataObj.getString(Constant.UNITID); } String unitName = ""; if(dataObj.has(Constant.COUNTYNAME)){ unitName=dataObj.getString(Constant.UNITNAME); } int teachType = 0; if(dataObj.has(Constant.TEACHERTYPE)){ teachType=dataObj.getInt(Constant.TEACHERTYPE); } int teachChooseStudentCount = 0; if(dataObj.has(Constant.TEACHCHOOSESTUDENTCOUNT)){ teachChooseStudentCount=dataObj.getInt(Constant.TEACHCHOOSESTUDENTCOUNT); } //1600022 作业点赞 发起人 (userId)为被统计学生 //1600035 提交作业 发起人 (userId)为被统计学生 String bookId = ""; if(dataObj.has(Constant.BOOKID)){ bookId=dataObj.getString(Constant.BOOKID); } //奥数提分宝:确认交卷 ID 1713007(无) String challengeId = ""; if(dataObj.has(Constant.CHALLENGEID)){ challengeId=dataObj.getString(Constant.CHALLENGEID); } int challengeRightQuestionCount = 0; if(dataObj.has(Constant.CHALLENGERIGHTQUESTIONCOUNT)){ // challengeRightQuestionCount=dataObj.getString(Constant.CHALLENGERIGHTQUESTIONCOUNT); challengeRightQuestionCount=dataObj.getInt(Constant.CHALLENGERIGHTQUESTIONCOUNT); } int challengeQuestionCount = 0; if(dataObj.has(Constant.CHALLENGEQUESTIONCOUNT)){ // challengeQuestionCount=dataObj.getString(Constant.CHALLENGEQUESTIONCOUNT); challengeQuestionCount=dataObj.getInt(Constant.CHALLENGEQUESTIONCOUNT); } String beCommentUserList=""; if(dataObj.has("beCommentUserList")){ System.out.println("beCommentUserList:"+beCommentUserList); JSONArray jsonArray=dataObj.getJSONArray("beCommentUserList"); JSONObject jObj=null; for(int i=0;i<jsonArray.length();i++){ jObj=jsonArray.getJSONObject(i); if(jObj.has("beCommentUserId")){ beCommentUserList+=jObj.getString("beCommentUserId"); if(i<jsonArray.length()){ beCommentUserList+="\002"; } } } } ActionLogInfo alInfo=new ActionLogInfo(); alInfo.setActId(actId); alInfo.setBeUserId(beUserId); alInfo.setBeUserCountyId(beUserCountyId); alInfo.setBeUserIcon(beUserIcon); alInfo.setBeUserName(beUserName); alInfo.setBeUserRoleId(beUserRoleId); alInfo.setBookId(bookId); alInfo.setChallengeId(challengeId); alInfo.setChallengeQuestionCount(challengeQuestionCount); alInfo.setChallengeRightQuestionCount(challengeRightQuestionCount); alInfo.setCityId(cityId); alInfo.setCityName(cityName); alInfo.setClassId(classId); alInfo.setClassName(className); alInfo.setGradeId(gradeId); alInfo.setCountyId(countyId); alInfo.setCountyName(countyName); alInfo.setIp(ip); alInfo.setModule(module); alInfo.setOriginCode(originCode); alInfo.setPostId(postId); alInfo.setPostType(postType); alInfo.setProvinceId(provinceId); alInfo.setProvinceName(provinceName); alInfo.setRole(role); alInfo.setSchoolId(schoolId); alInfo.setSchoolName(schoolName); alInfo.setSubjectId(subjectId); alInfo.setSubjectName(subjectName); alInfo.setTeachChooseStudentCount(teachChooseStudentCount); alInfo.setTeachType(teachType); alInfo.setTime(time); alInfo.setUnitId(unitId); alInfo.setUnitName(unitName); alInfo.setUserIcon(userIcon); alInfo.setUserId(userId); alInfo.setUserIp(userIp); alInfo.setUserName(userName); alInfo.setBeCommentUserList(beCommentUserList); return alInfo; } catch (NumberFormatException e) { logger.error("", e); } catch (JSONException e) { logger.error("", e); } return null; } public static void main(String[] args) { JSONObject jobj = new JSONObject(); System.out.println(jobj.getString("a")); } }
相关推荐
在Java开发中,`org.json.JSONObject` 是一个广泛使用的库,它允许开发者处理JSON对象,进行JSON数据的创建、解析和操作。这个库是`org.json`包的一部分,由Morten Kjetland开发并维护,它提供了一个简单且直观的...
这个库由Mozilla Public License提供,广泛应用于需要在Java应用中进行JSON解析、生成和操作的场景。JSON是一种轻量级的数据交换格式,因其简洁明了,易于人阅读和编写,同时也方便机器解析和生成,故在Web服务和...
例如,你可以将一个HashMap转换为JSON对象,或者将JSON文本解析为一个包含键值对的Java对象。 为了使用`net.sf.json.JSONObject`,你需要在项目中引入相应的jar包。根据标题和描述,这个压缩包文件可能包含了运行和...
在实际开发中,除了`fromObject()`,net.sf.json.JSONObject还提供了许多其他方法,如`get()`, `put()`, `toString()`, `toJSONArray()`等,帮助开发者进行JSON数据的操作和解析。这些功能使得...
这个类库是开源项目JSON.org的一部分,用于在Java应用程序中处理JSON(JavaScript Object Notation)数据格式。JSON是一种轻量级的数据交换格式,广泛应用于Web服务和分布式系统中的数据传输。 描述 ...
它还提供了解析JSON和生成JSON的功能,可以方便地进行JSON操作,例如: 1. 将Java对象转换为JSON字符串: ```java User user = new User(); // 设置user属性... String jsonString = JSON.toJSONString(user); ...
3. **遍历和操作JSON**:`JSONObject` 提供了迭代器接口,可以方便地遍历JSON对象的所有键值对,并对其进行修改或删除。 ```java for (String key : jsonObject.keySet()) { System.out.println("Key: " + key + ...
JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。 `net.sf.json.JSONObject`是该库中的核心类,它代表了一个JSON对象。这个类提供了一系列的方法来创建、修改和操作JSON对象。例如,...
无论你需要解析接收到的JSON字符串,还是需要将Java对象转化为JSON格式发送出去,"net.sf.json.JSONObject"都提供了强大的工具。 为了使用这个Jar包,你需要将其添加到项目的类路径中。如果你使用的是Maven,可以在...
这段代码会将`jsonString`解析成一个`JSONObject`,你可以通过字段名访问其中的数据,如`jsonObject.getString("name")`来获取`name`的值。 ### 2. 将JSON字符串转换为Java对象 `JSONObject`提供了一种将JSON数据...
`JSONObject`可以从一个Java对象创建,也可以解析为一个JSON字符串。例如,我们有一个简单的Java对象: ```java public class User { private String name; private int age; // getters and setters } ``` 要...
`JSONObject`是`org.json`库中的核心类之一,它代表一个JSON对象,允许我们以键值对的形式存储数据。在JSON中,对象被定义为一个由大括号 `{}` 包围的键值对集合。例如: ```json { "name": "John", "age": 30, ...
org.json库包含了一些核心类,如JSONObject、JSONArray、XML等,它们为JSON对象和数组提供了丰富的操作接口。下面将详细介绍这些核心类以及如何使用它们。 1. JSONObject:这是org.json库的核心类之一,它代表一个...
在Java开发领域,多种库支持JSON的解析和生成,其中`net.sf.json.JSONObject`是较为常用的一种实现。 #### JSON概述 JSON是一种基于文本的数据交换格式,主要包括两种结构:一种是“名称/值”对的集合,另一种是值...
JSON是一种轻量级的数据交换格式,它基于JavaScript的一个子集,易于人阅读和编写,同时也易于机器解析和生成。在Java中,`net.sf.json.JSONObject`库提供了一个方便的工具,帮助我们实现这个转换。 `...
`org.json.JSONObject`是Java中一个广泛使用的库,用于处理JSON对象。这个库非常实用,因为它只需要一个文件——`org.json.jar`,就可以实现JSON的序列化和反序列化操作,无需额外安装或引入其他依赖,这大大简化了...
org.json库包含了一系列的Java类和接口,如JSONObject、JSONArray、JSONString、JSONTokener等,它们各自服务于不同的JSON操作需求: 1. **JSONObject**:代表一个JSON对象,类似于Java中的Map。它包含一系列键值对...
`JSONObject`是JSON在Java中的表示,它封装了一个HashMap,用于存储键值对。 2. **创建JSONObject** 可以通过构造函数创建一个空的JSONObject,或者直接从一个Map实例转换而来。例如: ```java Map, Object> map...