JSONObject_javascript 스킬 사용법에 대한 자세한 설명
1.JSON객체 소개
JSONObject-lib 패키지는 Bean, 컬렉션, 맵, Java 배열, xml을 JSON으로 변환하기 위한 패키지입니다.
2. jar 패키지 다운로드
http://files.cnblogs.com/java-pan/lib.rar
JSONObject의 jar에 의존하는 6개의 다른 jar 패키지, 총 7개의 jar 파일을 제공합니다.
참고: 직장에서 프로젝트에 사용된 버전은 1.1이며, 이는 jdk1.3 버전에 해당하므로 이 블로그는 1.1 버전을 기준으로 작성되었습니다.
이 버전에 해당하는 javadoc 다운로드 경로는 다음과 같습니다. http://sourceforge.net/projects/json-lib/files/json-lib/json-lib-1.1/
최신 버전은 2.4입니다. 기타 버전의 다운로드 주소는 http://sourceforge.net/projects/json-lib/files/json-lib/
입니다.3. 프로젝트 환경:
시스템: WIN7 myeclipse: 6.5 tomcat: 5.0 JDK: 개발 환경과 컴파일 모두 1.5 사용
프로젝트 구성은 다음과 같습니다.
참고: 이번에 사용한 파일은 프로젝트 디렉터리의 json 패키지에 있는 JSONObject_1_3 클래스와 note.txt뿐입니다
1.1 기반의 4.class&method API
다음과 같은 계약을 체결하세요.
1. JSONObject 1.1 기반 API 소개
2. 자주 사용되는 클래스와 메소드만 소개
3. 이 버전은 더 이상 권장되지 않습니다.
4. 소개된 클래스와 메소드는 주로 본 블로그에서 사용된 클래스와 메소드를 중심으로 작성되었습니다
JSONObject:A JSONObject is an unordered collection of name/value pairs.
은 최종 클래스이며 Object를 상속하고 JSON 인터페이스를 구현합니다.
시공방법은 다음과 같습니다.
JSONObject(); 빈 JSONObject 객체 생성
JSONObject(boolean isNull); 비어 있는지 여부에 관계없이 JSONObject 객체를 생성합니다
일반적인 방법은 다음과 같습니다.
fromBean(Object bean); 정적 메소드, pojo 객체를 통해 JSONObject 객체를 생성합니다
fromJSONObject(JSONObject 객체); 정적 메서드, 다른 JSONObject 객체를 통해 JSONObject 객체를 생성합니다
fromJSONString(JSONString string); 정적 메소드, JSONString을 통해 JSONObject 객체를 생성합니다
toString(); JSONObject 객체를 json 형식 문자열로 변환
iterator()는 요소를 순회하기 위해 Iterator 객체를 반환합니다.
다음은 몇 가지 put/get 메소드입니다. API는 다음과 같이 설명됩니다.
get 메소드는 값을 찾을 수 있으면 값을 반환하고, 값을 찾을 수 없으면 예외를 발생시킵니다. opt 메소드는 예외를 발생시키는 대신 기본값을 반환하므로 선택적 값을 얻는 데 유용합니다.
JSONArray:JSONArray는 순서가 지정된 값 시퀀스입니다.
은 최종 클래스이며 Object를 상속하고 JSON 인터페이스를 구현합니다.
시공방법은 다음과 같습니다.
JSONArray()는 빈 JSONArray 객체를 생성합니다
일반적인 방법은 다음과 같습니다.
fromArray(Object[] array); 정적 메소드, Java 배열을 통해 JSONArray 객체를 생성합니다fromCollection(Collection collection); 정적 메소드, 컬렉션 객체를 통해 JSONArray 객체를 생성합니다
fromString(String string); 정적 메소드, json 형식 문자열에서 JSONArray 객체를 구성합니다
toString(); JSONArray 객체를 json 형식 문자열로 변환
iterator()는 요소를 순회하기 위해 Iterator 객체를 반환합니다.
다음 단계도 put/get 메소드입니다...
XMLSerializer:JSON을 XML로 변환하는 유틸리티 클래스
Object를 상속받은 클래스
시공방법은 다음과 같습니다.
XMLSerializer(); XMLSerializer 객체 생성
일반적인 방법은 다음과 같습니다.
setRootName(String rootName); 변환된 xml의 루트 요소 이름을 설정합니다setTypeHintsEnabled(boolean typeHintsEnabled) 각 요소에 유형 속성이 표시되는지 여부 설정
write(JSON json); json 객체를 xml로 변환합니다. 기본 문자 인코딩은 UTF-8입니다.
인코딩 설정이 필요한 경우 write(JSON json, String 인코딩)을 사용하면 됩니다
5. XML 및 JSON 문자열의 각 열에 대한 간단한 예
JSON:
{"password":"123456","username":"张三"}
xml
<?xml version="1.0" encoding="UTF-8"?> <user_info> <password>123456</password> <username>张三</username> </user_info>
시작
프로젝트 이름이 JS인 새 웹 프로젝트를 만들고 다음 7개의 jar 패키지를 가져옵니다. 파일은 이전 준비 경로에서 다운로드됩니다.참고: 새 웹 프로젝트를 만들 필요는 없습니다. 일반 Java 프로젝트도 이 문서의 작업을 완료할 수 있습니다. json 패키지 외에 다른 6개 패키지를 import 해야하는 이유는 한눈에 알 수 있도록 마지막에 note.txt 를 올려드리겠습니다.
질문1: 프런트엔드에서 수신한 json 형식 문자열을 백그라운드에서 어떻게 처리하나요?
public static void jsonToJAVA() { System.out.println("json字符串转java代码"); String jsonStr = "{\"password\":\"\",\"username\":\"张三\"}"; JSONObject jsonObj = JSONObject.fromString(jsonStr); String username = jsonObj.getString("username"); String password = jsonObj.optString("password"); System.out.println("json--->java\n username=" + username + "\t password=" + password); }
question2:后台是怎么拼装json格式的字符串?
public static void javaToJSON() { System.out.println("java代码封装为json字符串"); JSONObject jsonObj = new JSONObject(); jsonObj.put("username", "张三"); jsonObj.put("password", ""); System.out.println("java--->json \n" + jsonObj.toString()); }
question3:json格式的字符串怎么转换为xml格式的字符串?
public static void jsonToXML() { System.out.println("json字符串转xml字符串"); String jsonStr = "{\"password\":\"\",\"username\":\"张三\"}"; JSONObject json = JSONObject.fromString(jsonStr); XMLSerializer xmlSerializer = new XMLSerializer(); xmlSerializer.setRootName("user_info"); xmlSerializer.setTypeHintsEnabled(false); String xml = xmlSerializer.write(json); System.out.println("json--->xml \n" + xml); }
question4:xml格式的字符串怎么转换为json格式的字符串?
public static void xmlToJSON(){ System.out.println("xml字符串转json字符串"); String xml = "<?xml version=\".\" encoding=\"UTF-\"?><user_info><password></password><username>张三</username></user_info>"; JSON json=XMLSerializer.read(xml); System.out.println("xml--->json \n"+json.toString()); }
question5:javabean怎么转换为json字符串?
public static void javaBeanToJSON() { System.out.println("javabean转json字符串"); UserInfo userInfo = new UserInfo(); userInfo.setUsername("张三"); userInfo.setPassword(""); JSONObject json = JSONObject.fromBean(userInfo); System.out.println("javabean--->json \n" + json.toString()); }
question6:javabean怎么转换为xml字符串?
public static void javaBeanToXML() { System.out.println("javabean转xml字符串"); UserInfo userInfo = new UserInfo(); userInfo.setUsername("张三"); userInfo.setPassword(""); JSONObject json = JSONObject.fromBean(userInfo); XMLSerializer xmlSerializer = new XMLSerializer(); String xml = xmlSerializer.write(json, "UTF-"); System.out.println("javabean--->xml \n" + xml); }
完整的JSONObject_1_3.java代码如下:
JSONObject_1_3 package json; import net.sf.json.JSON; import net.sf.json.JSONObject; import net.sf.json.xml.XMLSerializer; public class JSONObject__ { public static void javaToJSON() { System.out.println("java代码封装为json字符串"); JSONObject jsonObj = new JSONObject(); jsonObj.put("username", "张三"); jsonObj.put("password", ""); System.out.println("java--->json \n" + jsonObj.toString()); } public static void jsonToJAVA() { System.out.println("json字符串转java代码"); String jsonStr = "{\"password\":\"\",\"username\":\"张三\"}"; JSONObject jsonObj = JSONObject.fromString(jsonStr); String username = jsonObj.getString("username"); String password = jsonObj.optString("password"); System.out.println("json--->java\n username=" + username + "\t password=" + password); } public static void jsonToXML() { System.out.println("json字符串转xml字符串"); String jsonStr = "{\"password\":\"\",\"username\":\"张三\"}"; JSONObject json = JSONObject.fromString(jsonStr); XMLSerializer xmlSerializer = new XMLSerializer(); xmlSerializer.setRootName("user_info"); xmlSerializer.setTypeHintsEnabled(false); String xml = xmlSerializer.write(json); System.out.println("json--->xml \n" + xml); } public static void javaBeanToJSON() { System.out.println("javabean转json字符串"); UserInfo userInfo = new UserInfo(); userInfo.setUsername("张三"); userInfo.setPassword(""); JSONObject json = JSONObject.fromBean(userInfo); System.out.println("javabean--->json \n" + json.toString()); } public static void javaBeanToXML() { System.out.println("javabean转xml字符串"); UserInfo userInfo = new UserInfo(); userInfo.setUsername("张三"); userInfo.setPassword(""); JSONObject json = JSONObject.fromBean(userInfo); XMLSerializer xmlSerializer = new XMLSerializer(); String xml = xmlSerializer.write(json, "UTF-"); System.out.println("javabean--->xml \n" + xml); } public static void xmlToJSON(){ System.out.println("xml字符串转json字符串"); String xml = "<?xml version=\".\" encoding=\"UTF-\"?>"; JSON json=XMLSerializer.read(xml); System.out.println("xml--->json \n"+json.toString()); } public static void main(String args[]) { // javaToJSON(); // jsonToJAVA(); // jsonToXML(); // javaBeanToJSON(); // javaBeanToXML(); xmlToJSON(); } } 张三
完整的UserInfo.java代码如下:
UserInfo package json; public class UserInfo { public String username; public String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
result
代码和运行结果都已经贴在每个问题的后面,运行时直接用main方法分别对每个方法运行即可看到测试效果。
note.txt是报的对应的错误及解决方法,也从另一个方面说明为什么需要导入前面提到的jar包;
note.txt文件内容如下:
java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:537) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123) at java.net.URLClassLoader.defineClass(URLClassLoader.java:251) at java.net.URLClassLoader.access$100(URLClassLoader.java:55) at java.net.URLClassLoader$1.run(URLClassLoader.java:194) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:187) at java.lang.ClassLoader.loadClass(ClassLoader.java:289) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274) at java.lang.ClassLoader.loadClass(ClassLoader.java:235) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302) at generate.TestJSONObject.main(TestJSONObject.java:40) Exception in thread "main"
解决方案:导入commons-lang-2.1.jar
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory at net.sf.json.JSONObject.<clinit>(JSONObject.java:125) at generate.TestJSONObject.main(TestJSONObject.java:40) Exception in thread "main"
解决方案:导入commons-logging.jar
java.lang.NoClassDefFoundError: org/apache/commons/beanutils/DynaBean at net.sf.json.JSONObject.set(JSONObject.java:2164) at net.sf.json.JSONObject.put(JSONObject.java:1853) at net.sf.json.JSONObject.put(JSONObject.java:1806) at generate.TestJSONObject.main(TestJSONObject.java:41) Exception in thread "main"
解决方案:导入commons-beanutils.jar
java.lang.NoClassDefFoundError: net/sf/ezmorph/MorpherRegistry at net.sf.json.util.JSONUtils.<clinit>(JSONUtils.java:65) at net.sf.json.JSONObject.set(JSONObject.java:2164) at net.sf.json.JSONObject.put(JSONObject.java:1853) at net.sf.json.JSONObject.put(JSONObject.java:1806) at generate.TestJSONObject.main(TestJSONObject.java:41) Exception in thread "main"
解决方案:导入ezmorph-1.0.2.jar
java.lang.NoClassDefFoundError: org/apache/commons/collections/FastHashMap at org.apache.commons.beanutils.PropertyUtils.<clinit>(PropertyUtils.java:208) at net.sf.json.JSONObject.fromBean(JSONObject.java:190) at net.sf.json.JSONObject.fromObject(JSONObject.java:437) at net.sf.json.JSONObject.set(JSONObject.java:2196) at net.sf.json.JSONObject.put(JSONObject.java:1853) at net.sf.json.JSONObject.put(JSONObject.java:1806) at generate.TestJSONObject.main(TestJSONObject.java:41) Exception in thread "main"
解决方案:导入commons-collections-3.0.jar
Exception in thread "main" java.lang.NoClassDefFoundError: nu/xom/Serializer at generate.TestJSONObject.jsonToXML(TestJSONObject.java:88) at generate.TestJSONObject.main(TestJSONObject.java:96)
解决方案:导入xom-1.0d10.jar
几点说明:
1.注意UserInfo类的修饰符,用public修饰,变量username和password也用public修饰,最好单独的写一个类,这里就不贴出来了
2.以上json字符串和xml字符串都是最简单的形式,实际开发中json字符串和xml格式比这个复杂的多,
处理复杂的json字符串,可以封装写一个类继承HashMap,然后重写其put和get方法,以支持对类型为A[0].B及A.B的键值的读取和指定
3.以上6中情况在实际开发中可能有些不存在或不常用
存在的问题:
1.使用XMLSerializer的write方法生成的xml字符串的中文乱码问题
2.question4中的红色的log日志问题
以上内容是小编给大家介绍的JSONObject使用方法详解,希望大家喜欢。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











프론트 엔드 개발시 프론트 엔드 열지대 티켓 인쇄를위한 자주 묻는 질문과 솔루션, 티켓 인쇄는 일반적인 요구 사항입니다. 그러나 많은 개발자들이 구현하고 있습니다 ...

기술 및 산업 요구에 따라 Python 및 JavaScript 개발자에 대한 절대 급여는 없습니다. 1. 파이썬은 데이터 과학 및 기계 학습에서 더 많은 비용을 지불 할 수 있습니다. 2. JavaScript는 프론트 엔드 및 풀 스택 개발에 큰 수요가 있으며 급여도 상당합니다. 3. 영향 요인에는 경험, 지리적 위치, 회사 규모 및 특정 기술이 포함됩니다.

JavaScript는 현대 웹 개발의 초석이며 주요 기능에는 이벤트 중심 프로그래밍, 동적 컨텐츠 생성 및 비동기 프로그래밍이 포함됩니다. 1) 이벤트 중심 프로그래밍을 사용하면 사용자 작업에 따라 웹 페이지가 동적으로 변경 될 수 있습니다. 2) 동적 컨텐츠 생성을 사용하면 조건에 따라 페이지 컨텐츠를 조정할 수 있습니다. 3) 비동기 프로그래밍은 사용자 인터페이스가 차단되지 않도록합니다. JavaScript는 웹 상호 작용, 단일 페이지 응용 프로그램 및 서버 측 개발에 널리 사용되며 사용자 경험 및 크로스 플랫폼 개발의 유연성을 크게 향상시킵니다.

동일한 ID로 배열 요소를 JavaScript의 하나의 객체로 병합하는 방법은 무엇입니까? 데이터를 처리 할 때 종종 동일한 ID를 가질 필요가 있습니다 ...

이 기사에서 시차 스크롤 및 요소 애니메이션 효과 실현에 대한 토론은 Shiseido 공식 웹 사이트 (https://www.shiseido.co.jp/sb/wonderland/)와 유사하게 달성하는 방법을 살펴볼 것입니다.

JavaScript를 배우는 것은 어렵지 않지만 어려운 일입니다. 1) 변수, 데이터 유형, 기능 등과 같은 기본 개념을 이해합니다. 2) 마스터 비동기 프로그래밍 및 이벤트 루프를 통해이를 구현하십시오. 3) DOM 운영을 사용하고 비동기 요청을 처리합니다. 4) 일반적인 실수를 피하고 디버깅 기술을 사용하십시오. 5) 성능을 최적화하고 모범 사례를 따르십시오.

프론트 엔드에서 VSCODE와 같은 패널 드래그 앤 드롭 조정 기능의 구현을 탐색하십시오. 프론트 엔드 개발에서 VSCODE와 같은 구현 방법 ...

Console.log 출력의 차이의 근본 원인에 대한 심층적 인 논의. 이 기사에서는 Console.log 함수의 출력 결과의 차이점을 코드에서 분석하고 그에 따른 이유를 설명합니다. � ...
