3

次のような JSON オブジェクトがあります: (次のリンクは偽物です)

"results": {
    "urlStuff": [
        {"pic_url": "http:\/\/www.youtube.com\/inside\/kslkjfldkf\/234.jpg?v=7475646"},
        {"other_pic_url": "http:\/\/www.youtube.com\/outside\/kslkjfldkf\/234.jpg?v=7475646"}
    ]
}

またはその趣旨の何か。私の質問は、URL が既に文字列であるのに、なぜ URL にエスケープ文字があるのですか? URL でメソッド呼び出しを行って写真を取得するには、それらを取り除く必要があります。何か不足していますか?私はこの呼び出しを行うために Android を使用しています。

ありがとう、マット

4

4 に答える 4

5

すでに文字列である場合、URLにエスケープ文字が含まれているのはなぜですか?

文字列であるため、エスケープ文字があります。具体的には、JSON文字列であるため、JSON文字列のエスケープ文字があり、それらを送信したエンティティは、固相線をエスケープするオプションを使用することにしました。送信エンティティがその選択を行った理由の詳細については、「GroovyJSONBuilderがURLのスラッシュをエスケープする理由」を参照してください。役職。

写真を取得するためにURLでメソッド呼び出しを行うためにそれらを取り除く必要があります。私は何かが足りないのですか?

簡単な方法で、適切なJSON解析APIを使用して、JSON文字列をJava文字列に変換するときにJSONエスケープ文字を自動的に削除します。Androidには、このような組み込みのJSONライブラリがあります。

package com.stackoverflow.q6564078;

import org.json.JSONObject;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class Foo extends Activity
{
  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // {"pic_url": "http:\/\/www.youtube.com\/inside\/kslkjfldkf\/234.jpg?v=7475646"}
    String jsonInput = "{\"pic_url\": \"http:\\/\\/www.youtube.com\\/inside\\/kslkjfldkf\\/234.jpg?v=7475646\"}";
    Log.d("JSON INPUT", jsonInput);
    // output: {"pic_url": "http:\/\/www.youtube.com\/inside\/kslkjfldkf\/234.jpg?v=7475646"}

    try
    {
      JSONObject jsonObject = new JSONObject(jsonInput);
      String javaUrlString = jsonObject.getString("pic_url");
      Log.d("JAVA URL STRING", javaUrlString);
      // output: http://www.youtube.com/inside/kslkjfldkf/234.jpg?v=7475646
    }
    catch (Exception e)
    {
      throw new RuntimeException(e);
    }
  }
}
于 2011-07-03T20:00:53.300 に答える
1

すでに文字列である場合、URLにエスケープ文字が含まれているのはなぜですか?

以来:

  1. <script>JSON生成関数を使用して、要素内に埋め込むためのJavaScriptリテラルを生成することは珍しくありません。
  2. HTMLはJSONに埋め込まれていることが多く、
  3. このシーケンス</は、HTML 4のスクリプトブロックを終了します(</script>すべてのブラウザーで終了します)

/…文字をエスケープすると、データを安全に<script>要素にドロップできます。

写真を取得するためにURLでメソッド呼び出しを行うためにそれらを取り除く必要があります。

あなたのJSONライブラリはあなたのためにそれをするべきです。エラー…あなたJSONライブラリを使用していて、正規表現を含むクレイジーなことを試みていませんね。

于 2011-07-03T19:59:00.020 に答える
1

提供された URL にエスケープ文字は見当たりませんでしたが、URL はエンコードされています。URLEncoderをご覧になることをお勧めします。このクラスは、URL をエンコードするさまざまな方法を提供します。

通常、標準では、URL が UTF-8 を使用してエンコードされることが暗示されています。ただし、言語によっては、エンコーディングと文字セットが異なる場合があります。最近、アジアの文字を含む URL を処理する必要があり、それらは他の文字セット (たとえば、韓国語の eur-ko) でエンコードされていました。

このサイトを使用して、いくつかの URL を手動でデコード/エンコードし、文字セットを見つけました。

使用する適切な文字セットが見つかったら、Java SDK の Charset クラスを使用して、URL を通常の utf-16 Java 文字列に変換できます。チュートリアルはこちら

よろしく、ステファン

于 2011-07-03T16:38:31.437 に答える
0

「/」文字は、JSON 構文に従ってエスケープする必要 があります: http://www.json.org/。通常、使用している JSON API が何であれ、エスケープ文字を適切に復元する必要があります。

編集:コメントに従って修正

于 2011-07-03T18:12:44.827 に答える