2017-10-16 8 views
0

私はこのこのような文字列を分割する方法は?

public static void jsonToMap(String t) throws JSONException { 

    HashMap<String, String> map = new HashMap<String, String>(); 
    JSONObject jObject = new JSONObject(t); 
    Iterator<?> keys = jObject.keys(); 

    while(keys.hasNext()){ 
     String key = (String)keys.next(); 
     String value = jObject.getString(key); 
     map.put(key, value); 

    } 

    System.out.println("json : "+jObject); 
    System.out.println("map : "+map); 
} 

のように試してみました。しかし、彼らはJSON形式を与えませんが、私はそれが可能であるか、個別の値を取得するために分割したい、この

{PickupLocation=204, Jai nagar main road, Chandragandhi Nagar, Ponmeni, Madurai, Tamil Nadu 625016, DropLocation=204, Jai nagar main road, Chandragandhi Nagar, Ponmeni, Madurai, Tamil Nadu 625016, PickupLongitude=78.0928147163509, DropLongitude=78.0928147163509, PickupLatitude=9.92065524221638, DropLatitude=9.92065524221638, CustomerId=99, PhoneNumber=96788484887, CustomerName=Mayil, CustomerLastName=Kannan} 

のような結果を得ます私の貧しい英語のために申し訳ありません、私はアンドロイドの初心者です。

+1

その後、おそらくあなたが考えているマップを得るために=によって再び分割し、コンマと空白で分けどちらかの端、上ブラケットを取り除くことができますJSON形式ではありません。バックエンドチームに、適切な形式で応答を伝えるよう依頼してください。 – Kunu

+0

バックエンドを支援せずに分割するオプションはありませんか? –

+0

これは一貫したデータではありません。適切なフォーマットはありません。それらの半分はキーと値のペアにあり、半分はちょうど値です。コンマで区切って値を抽出すると汚れたトリックを試すことができます。抽出された文字列に '='が含まれていれば '=' – Kunu

答えて

0

残念ながら、これは有効なJsonではありません。私見あなたが必要があります:あなたは、あなたがいる場合のdict

  • に追加するには、キー/値のペアを=を持っている場合は

    1. =
    2. により分割された各部分のためのコンマ
    3. 、上の文字列を分割しましたそうでなければ、デフォルトのキーで配列を作ることができます。
  • 1

    CSVリストのすべての値に等号があるわけではないため、マップが値を保存するのに完全な意味を持たないことがあります。以下のコードスニペットでは、対応する値のないマップのキーとして等号なしの値を格納します。

    String input = "..."; 
    Map<String, String> map = new HashMap<>(); 
    input = input.replaceAll("\\s+\\{\\s+(.*)\\s+\\}\\s+", "$1"); 
    String[] parts = input.split(",\\s+"); 
    for (String part : parts) { 
        String[] vals = part.split("="); 
        map.put(vals[0], vals.length > 1 ? vals[1] : null); 
    } 
    
    for (Map.Entry<String, String> entry : map.entrySet()) { 
        System.out.println("key: " + entry.getKey() + ", value: " + entry.getValue()); 
    } 
    

    デモここに:

    Rextester

    関連する問題