如果 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);
}
}
}