2016-09-06 5 views
3

JSON形式を使用してJavaScriptからJavaへリクエストデータを作成してみてください。 JavaScriptで リクエストボディには、次のようになります。文字セットで何が問題ですか?

{ 
    "id": "3", 
    "name": "Chicken pasta", 
    "description": "Lets make chicken pasta", 
    "category": "Unassigned", 
    "favorite": true, 
    "prepTime": "", 
    "cookTime": "", 
    "ingredients": [ 
     {} 
    ], 
    "steps": [], 
    "user": { 
     "id": "2", 
     "username": "user2" 
    } 
} 

しかし、(私のJavaコントローラ内の)サーバー側で、それは次のようになります。

%7B%0A%09%22id%22%3A+%223%22%2C%0A%09%22name%22%3A+%22Chicken+pasta%22%2C%0A%09%22description%22%3A+%22Lets+make+chicken+pasta%22%2C%0A%09%22category%22%3A+%22Unassigned%22%2C%0A%09%22favorite%22%3A+true%2C%0A%09%22prepTime%22%3A+%22%22%2C%0A%09%22cookTime%22%3A+%22%22%2C%0A%09%22ingredients%22%3A+%5B%0A%09%09%7B%7D%0A%09%5D%2C%0A%09%22steps%22%3A+%5B%5D%2C%0A%09%22user%22%3A+%7B%0A%09%09%22id%22%3A+%222%22%2C%0A%09%09%22username%22%3A+%22user2%22%0A%09%7D%0A%7D= 

だから私は、JSONの解析例外を取得しています。 どのようにエンコードするのですか?

+0

そのあなたはそれはあなたがJS側でご覧すでにそれを使用してJSON文字列 – Tanmay

+0

デコードする必要がされてエンコードされたJSON.stringify(オブジェクト) –

+0

、文字列にjavascriptオブジェクトを変換するにはJSON.stringify()メソッドを使用 – zzheads

答えて

1

サーバーで受信した文字列はURLエンコードされています。 JSONとして解析する前にURLデコードする必要があります。 javaのURLデコードについては、this SO questionを参照してください。

1

はい、トーマス、あなたと私はすでにそれを見つけました。しかし、今述べた以前のURLDecoder.decode方法としてコード:)

public static String toDecimal (String hexStr) { 
     char[] hex = hexStr.toCharArray(); 
     char current; 
     String result = ""; 
     for (int i=0;i<hex.length;i++) { 
      if (hex[i] == '%') { 
       current = (char) ((toDecimal(hex[i+1]) * 16) + toDecimal(hex[i+2])); 
       i+=2; 
      } else { 
       if (hex[i] == '+') { 
        current = ' '; 
       } else { 
        current = hex[i]; 
       } 
      } 
      result += current; 
     } 
     while (!(result.endsWith("}") || result.endsWith("]"))) { 
      result = result.substring(0, result.length()-1); 
     } 
     return result; 
    } 

    private static int toDecimal (char hex) { 
     switch (hex) { 
      case '0': return 0; 
      case '1': return 1; 
      case '2': return 2; 
      case '3': return 3; 
      case '4': return 4; 
      case '5': return 5; 
      case '6': return 6; 
      case '7': return 7; 
      case '8': return 8; 
      case '9': return 9; 
      case 'A': return 10; 
      case 'B': return 11; 
      case 'C': return 12; 
      case 'D': return 13; 
      case 'E': return 14; 
      case 'F': return 15; 
     } 
     return -1; 
    } 

同じ結果の私自身のカップルの文字列を書いた、URLDecoder.decodeを使用しますが、JSONの終わりを発見していない間、私の機能は、エンドからすべての文字を削除しませんでした( '}'または ']')、なぜ私は考えていませんが、JSの終わりから '='記号で文字列を取得しています。

関連する問題