Im Im이 JSON 파일을 구문 분석하고 문자열을 가져 오는 앱에서 작동하지만 한 String이 있습니다. 왜 내 활동에 위장 할 수 없는지 전혀 알지 못합니다. 문자열은 Object> Array> String입니다. 2 개의 활동과 1 개의 모델이 있습니다. MainActivity : 여기서 JSON을 파싱합니다. DetailActivity : String이 필요한 곳. PostModel : 모든 세터와 게터가있는 모델입니다.객체 내부의 배열을 반복하여 JSON String 가져 오기
JSON :
{
"status":"ok",
"count":10,
"count_total":184,
"pages":19,
"posts":[
{ },
{
"id":2413,
,
"categories":[
{
"id":100,
"slug":"logging",
"title":"logging",
"description":"",
"parent":0,
"post_count":1
}
],
"comments":[
{
"id":3564,
"content":"<p>\u47 <\/p>\n",
"parent":0
}
],
"comment_count":1,
"thumbnail":"http:\/\/www.5.com\/wtent\g",
"custom_fields":{
"dsq_thread_id":[
"2365140"
],
"videoID":[
"--ffwf92jvDFy"
]
},
"thumbnail_images":{
"full":{
"url":"http:\/\/www.5.com\/jpg",
"width":727,
"height":454
},
"thumbnail":{
"url":"http:\/\/www.5.com\/wp-con50.jpg",
"width":150,
"height":150
}
}
}
]
}
PostModel :
private List<VidCast> videoIDList;
private String videoID;
public String getVideoID() {
return videoID;
}
public void setVideoID(String videoID) {
this.videoID = videoID;
}
public List<VidCast> getvideoIDList() { return videoIDList; }
public void setvideoIDList(List<VidCast> videoIDList) {
this.videoIDList = videoIDList;
}
public static class VidCast {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}
MainActivity :
List<PostModel.VidCast> vidCasts = JsonPath.parse(URL_TO_HIT).read("$.posts.[*].custom_fields.[*].videoID[*]");
vidCasts = new ArrayList<>();
for (int s = 0 ; s < finalObject.getJSONArray("custom_fields").length() ; s++){
PostModel.VidCast vidCast = new PostModel.VidCast();
vidCast.setName(videoID);
vidCasts.add(vidCast);
}
postModel.setvideoIDList(vidCasts);
// adding the final object in the list
postModelList.add(postModel);
}
return postModelList;
}
}
DetailActivity :
StringBuffer stringBuffer = new StringBuffer();
for(PostModel.CategoryCast categoryCast : postModel.getCategoryCastList()){
stringBuffer.append(categoryCast.getName() + ", ");
}
StringBuffer videoStringBuffer = new StringBuffer();
for(PostModel.VidCast videoIDList : postModel.getvideoIDList()) {
videoStringBuffer.append(videoStringBuffer.toString());
}
마지막 파일에서 < 문자열을 가져와야합니다. 나는 많은 시간을 보냈다. 객체 내부의 배열을 반복 할 수있는 방법을 이해할 수 없다.
미리 감사드립니다.
__________update________
나는 그런 식으로 구문 분석 관리 :
JSONObject customFields = finalObject.getJSONObject("custom_fields");
JSONArray vidCastsJson = customFields.getJSONArray("videoID");
List<PostModel.VidCast> videoIds = new ArrayList<>();
for (int s = 0 ; s < vidCastsJson.length() ; s++){
PostModel.VidCast vidCast = new PostModel.VidCast();
vidCast.setName(vidCastsJson.optString(s));
videoIds.add(vidCast);
String videoID = String.valueOf(vidCastsJson);
vidCast.setName(videoID);
을 나는 DetailActivityStringBuffer
videoStringBuffer = new StringBuffer();
for(PostModel.VidCast vidCast : postModel.getvideoIDList()) {
videoStringBuffer.append(vidCast.getName());
String videoID = vidCast.toString();
}
에서의 StringBuffer를 사용하지만 지금은 배열 브래킷 등으로 동영상 ID를 받고 있어요 그 [ "F3lyzrt"] 나는 그것을 단지 F3lyzrt 인 문자열로 원한다. 그래서 그것을 내 YouTube 플레이어에 전달할 수있다. 모든 조언이 충당됩니다. 그것은 다음과 같이 보일 것이다
당신의 JSON은 형식 https://jsonformatter.curiousconcept.com/ –
예 나는 나는 그것의 배열을 필요로하는 문자열을 퍼트 전체 코드를 삽입 didnt한다 원하는 JSON 포매터 온라인 도구에서 것을 확인 errors.please 데 및 개체. – Yasser
가능한 복제 : https://stackoverflow.com/questions/9605913/how-to-parse-json-in-android/9606629#9606629 – nasch