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 上调用方法来获取图片。我错过了什么吗?我正在使用 Android 拨打这个电话。

谢谢,马特

4

4 回答 4

5

如果 url 已经是字符串,为什么还有转义字符?

它们具有转义字符,因为它们是字符串 - 具体来说,因为它们是 JSON 字符串,它们具有 JSON 字符串转义字符,并且将它们发送给您的实体决定使用该选项来转义固线。有关发送实体为何做出该选择的更多信息,请参阅为什么 Groovy JSONBuilder 在 URL 中转义斜杠?邮政。

我必须摆脱它们才能在 URL 上调用方法来获取图片。我错过了什么吗?

在将 JSON 字符串转换为 Java 字符串时,采用简单的方法,只需使用体面的 JSON 解析 API 来自动删除 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

我在您提供的网址中看不到任何转义字符,但是,网址是经过编码的。我建议你看看URLEncoder。此类提供了对 URL 进行编码的不同方法。

通常,该标准暗示 URL 使用 UTF-8 编码。但是,对于某些语言,编码和字符集可能不同。最近我不得不处理包含亚洲字符的 url,它们被编码成其他字符集(例如,韩语的 eur-ko)。

我使用这个站点来解码/编码一些网址并找出字符集。

一旦找到要使用的正确字符集,就可以使用 Java sdk 的 Charset 类将 url 转换为普通的 utf-16 java 字符串。教程在这里

问候, 斯蒂芬

于 2011-07-03T16:38:31.437 回答
1

如果 url 已经是字符串,为什么还有转义字符?

自从:

  1. 使用 JSON 生成函数来生成用于嵌入<script>元素的 JavaScript 文字并不少见
  2. HTML 通常嵌入在 JSON 和
  3. 该序列</将终止 HTML 4 中的脚本块(并且</script>将在所有浏览器中)

…转义/字符确保数据可以安全地放入<script>元素中。

我必须摆脱它们才能在 URL 上调用方法来获取图片。

您的 JSON 库应该为您做到这一点。呃……你正在使用 JSON 库,而不是尝试一些疯狂的涉及正则表达式的东西,不是吗?

于 2011-07-03T19:59:00.020 回答
0

'/' 字符必须 可以转义,根据 JSON 语法: http: //www.json.org/。通常,您使用的任何 JSON API 都应正确恢复转义字符。

编辑:根据评论更正

于 2011-07-03T18:12:44.827 回答