2017-05-19 6 views
1

私はArrayListをJSONとして出力するために以下のコードを書きました。私は、コードを実行したとき、以下に示すように、I出力を得る:ArraysList as JSON

{uniteids:= [{ "UniteId:": "gsheetyr"、 "メッセージ":」与えられたユーザーがすでに所与のメンバーでありますDL:、}}、{"UniteId:": "spokuri"、 "Message:": "指定されたユーザーは既に指定のDLのメンバーです。"}]}

しかし、出力は以下の形式になります。自分のコードにどのような変更を加える必要があるか教えてください。

{ "uniteids":[{ "UniteId:": "gsheetyr"、 "メッセージ": "与えられたユーザーがすでに与えられたDLのメンバーである、。 "}、{" UniteId:": "spokuri"、 "メッセージ": "与えられたユーザーは、すでに与えられたDLのメンバーで、"}]}

コード:

package com.uniteid.controller; 

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 

import org.json.JSONArray; 

public class JsonResponse { 

    public static void main(String[] args) { 
    List<String> retStatus = new ArrayList<String>(); 
    Map<String, String> stat = new HashMap<String, String>(); 
    String jsonInString = "NORESPONSE"; 
    String jsonInString2 = ""; 
    Map<String, String> uniteidshashMap = new HashMap<String, String>(); 
    JSONArray ja = new JSONArray(); 
    retStatus.add("gsheetyr: The given user is already a member of the given DL.,"); 
    retStatus.add("spokuri : The given user is already a member of the given DL.,"); 

    if (retStatus.size() > 0) { 
     for (int i = 0; i < retStatus.size(); i++) { 
      String splited[] = retStatus.get(i).split("\\:"); 

      stat.put("UniteId:", splited[0]); 
      stat.put("Message:",splited[1]); 
      ja.put(stat); 

      System.out.println(ja); 
     } 

     jsonInString = ja.toString(); 
     uniteidshashMap.put("uniteids:", jsonInString); 
     jsonInString2 = uniteidshashMap.toString(); 

     System.out.println(jsonInString2); 
    } 
    } 
} 
+0

を試してみて、それがPHPであるように、私はJavaのマップ上でtoString()を呼び出すJavaの –

+2

に書いていますが、 "=" 記号が追加されます見えます。 https://docs.oracle.com/javase/7/docs/api/java/util/AbstractMap.html#toString() – Terje

+0

@sarathmandavaああ申し訳ありませんが、Dが投稿を混同しました – Edwin

答えて

0

@Edwinこの

JSONArray arrayHolder = new JSONArray(); 
if (retStatus.size() > 0) { 
    for (int i = 0; i < retStatus.size(); i++) { 
     String splited[] = retStatus.get(i).split("\\:"); 

     JSONObject innerObj = new JSONObject(); 

     innerObj.put("UniteId:", splited[0]); 
     innerObj.put("Message:",splited[1]); 
     arrayHolder.put(innerObj); 
    } 

    JSONObject finalObject = new JSONObject(); 
    finalObject.put("uniteids:", arrayHolder); 

    System.out.println(finalObject.toString()); 
} 
+0

私は以下の出力を得ました。私は、出力{ "uniteids:":に\を望んでいない "[{\" UniteId:\ ":\" gsheetyr \ "\ "メッセージ:\":\" 与えられたユーザは、すでにのメンバーであります指定されたユーザーは既に与えられたDLのメンバーです。\ "{\" UniteId:\ "spokuri \"、\ "Message:\" \ "、\":\ ":\"例外が発生しました - 20108-ORA-20108 \ "}、{\" UniteId:\ ":\" desa-icts-support @ unhqtest。指定されたグループは既に指定されたDLのメンバーです。\ "UniteId:\":\ "[email protected] \"、\ " "メッセージ:\":\ "指定された発信者ID/DLメールは無効です。\"}] " } –

+0

Aaah !!つかまえた。私たちは値を1つのjson文字列にしています。適切なJSON文字列を取得するために私の答えを修正します。 –

+0

それは動作します!どうもありがとう –

0

あなたuniteidshashMapオブジェクトをラップする場合、私は信じていますJsonArrayの中で、代わりにtoString()を呼び出すと、より良い結果が得られます。