JSON을 해석하고 값을 어레이로 변환하는 방법
public static void parseProfilesJson(String the_json){
try {
JSONObject myjson = new JSONObject(the_json);
JSONArray nameArray = myjson.names();
JSONArray valArray = myjson.toJSONArray(nameArray);
for(int i=0;i<valArray.length();i++)
{
String p = nameArray.getString(i) + "," + ValArray.getString(i);
Log.i("p",p);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
보시다시피 이 샘플코드는 JSON의 KEY를 출력하고 이어서 JSON의 VALUES를 출력합니다.
프로필이 인쇄됩니다. jon이 이렇다면:
{'profiles':'john'}
멋지네요.괜찮습니다, 저는 그 변수들을 다룰 수 있습니다.단, JSON이 다음과 같은 경우:
{'profiles': [{'name':'john', 'age': 44}, {'name':'Alex','age':11}]}
이 경우 전체 값이 배열이 됩니다.기본적으로 이 어레이(이 경우 "값")만 가져오면 됩니다.JAVA에서 사용할 수 있는 실제 어레이로 변환합니다.내가 어떻게 그럴 수 있을까?감사해요.
예를 들어 다음과 같습니다.
{'profiles': [{'name':'john', 'age': 44}, {'name':'Alex','age':11}]}
다음과 같은 효과를 얻을 수 있습니다.
JSONObject myjson = new JSONObject(the_json);
JSONArray the_json_array = myjson.getJSONArray("profiles");
배열 개체를 반환합니다.
그 후 다음과 같이 반복됩니다.
int size = the_json_array.length();
ArrayList<JSONObject> arrays = new ArrayList<JSONObject>();
for (int i = 0; i < size; i++) {
JSONObject another_json_object = the_json_array.getJSONObject(i);
//Blah blah blah...
arrays.add(another_json_object);
}
//Finally
JSONObject[] jsons = new JSONObject[arrays.size()];
arrays.toArray(jsons);
//The end...
데이터가 어레이인지 아닌지를 판단해야 합니다(단순히 확인만 하면 됩니다).charAt(0)
로부터 시작하다[
문자)
이게 도움이 됐으면 좋겠다.
요구 사항을 충족하기 위해 빠른 Json 파서를 선호할 수 있습니다.
Quick-json 파서는 매우 직설적이고 유연하며 매우 빠르고 사용자 정의가 가능합니다.이것을 시험해 보세요.
[Quick-json 파서] (https://code.google.com/p/quick-json/) - Quick-json 기능 -
JSON 사양에 준거(RFC4627)
고성능 JSON 파서
유연한 구성 가능한 해석 접근법 지원
임의의 JSON 가계의 키/값 쌍의 설정 가능한 검증
사용하기 쉬운 # 풋프린트 감소
개발자 친화적이고 추적하기 쉬운 예외 발생
플러그형 커스텀 검증 지원 - 키/값 검증은 커스텀 검증자를 설정함으로써 실행할 수 있습니다.
파서 지원 검증 및 비검증
Quick-json 검증 파서를 사용하기 위한 두 가지 유형의 구성(JSON/XML) 지원
JDK 1.5 필요 # 외부 라이브러리 의존 없음
오브젝트 시리얼화를 통한 Json Generation 지원
구문 분석 프로세스 중 수집 유형 선택 지원
예를 들어,
JsonParserFactory factory=JsonParserFactory.getInstance();
JSONParser parser=factory.newJsonParser();
Map jsonMap=parser.parseJson(jsonString);
이 질문의 다른 답변은 작업할 Java 개체가 있다고 가정합니다.대응하는 Java 오브젝트가 없는 임의의 json 구조에서 값을 얻을 수 있기를 원했습니다.
제 생각은 "key": value" 형식의 필드 키입니다.이제 결과의 각 행에는 목록/어레이에 넣을 수 있는 값이 최대 1개 포함됩니다.json 스코프 딜리미터([]{})"도 삭제합니다.
이 솔루션에서는 다음과 같은 전제가 있습니다.
json에는 큰따옴표를 사용합니다.
json은 포맷이 꽤 잘 되어 있습니다.
public static String getOnlyJsonValues(String json) { json = json.replaceAll("\\{", ""); json = json.replaceAll("}", ""); json = json.replaceAll("\\[", ""); json = json.replaceAll("]", ""); json = json.replaceAll("\".*?\":", ""); return json; }
이제 출력을 문자열 목록으로 해석하면 됩니다.
public static List<String> parseUniqueValues(String json) {
List<String> values = new ArrayList<>();
String onlyValues = getOnlyJsonValues(json);
try {
StringReader stringReader = new StringReader(onlyValues);
BufferedReader bufReader = new BufferedReader(stringReader);
String line;
while ((line = bufReader.readLine()) != null) {
if (line.endsWith(",")) {
line = line.substring(0, line.length() - 1);
}
if (line.startsWith("\"") && line.endsWith("\"")) {
line = line.substring(1, line.length() - 1);
}
line = line.trim();
if (line.length() > 0) {
values.add(line);
}
}
} catch (IOException e) {
LOG.warn("Unable to read lines in String:" + onlyValues);
}
return values;
}
언급URL : https://stackoverflow.com/questions/2255220/how-to-parse-a-json-and-turn-its-values-into-an-array
'programing' 카테고리의 다른 글
현재 시각에 분수를 빠르게 추가하는 방법 (0) | 2023.04.10 |
---|---|
iOS에서 디바이스 제조 및 모델을 얻는 방법 (0) | 2023.04.10 |
오류 수정 방법: ./node_modules/@react-leaflet/core/esm/path.js 10:41 모듈 해석 실패:예기치 않은 토큰(10:41) (0) | 2023.04.05 |
각도 ng-repeat에 의한 부트스트랩 행 추가(3 또는 4 col마다) (0) | 2023.04.05 |
ASP를 참조합니다.JavaScript에서 ID에 의한 NET 제어? (0) | 2023.04.05 |