我的Android应用JSON
编码有问题。无论我做什么,它都会将斜杠符号/
输出为\/
。我看了一些关于这方面的问题,但我还没有让它们起作用
这是我的代码。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.aaa);
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
final Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Perform action on click
UUID uuid = UUID.randomUUID();
String randomUUIDString = uuid.toString();
Toast.makeText(MainTest.this, "button was pressed",
Toast.LENGTH_SHORT).show();
try {
JSONObject json = new JSONObject();
json.put("id", randomUUIDString);
json.put("photoUrl", "https://mysite.com/2011/10/image.jpg");
postData(json);
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
public void postData(JSONObject json) throws JSONException {
HttpClient httpclient = new DefaultHttpClient();
try {
HttpPost httppost = new HttpPost(url_content);
List<NameValuePair> nvp = new ArrayList<NameValuePair>();
nvp.add(new BasicNameValuePair("json", json.toString()));
httppost.setEntity(new UrlEncodedFormEntity(nvp));
HttpResponse response = httpclient.execute(httppost);
Log.i("TEST", json.toString(1));
} catch (Exception e) {
e.printStackTrace();
}
}
此提示为
{
"photoUrl": "https:\/\/mysite.com\/2011\/10\/image.jpg",
"id": "7b34aa16-3c80-40b3-b12b-6decdd38fabc"
}
答案 0 :(得分:0)
你需要逃避斜线。
json.put("photoUrl", "https:\//mysite.com\/2011\/10\/image.jpg")
另请注意,因为你没有&#34; \&#34;在原始字符串中,您可以轻松替换&#34; \&#34;用&#34;&#34;
使用str.replace("\", "")
;
如果您使用Gson
,请尝试:
Gson gson = new GsonBuilder()..disableHtmlEscaping().create();
然后希望gson不会逃脱你的HTML
答案 1 :(得分:0)
它的JSON选项。在标记中嵌入JSON时允许\/
会有所帮助,标记内部不允许</
,如Seb指出的那样。
在Javascript中,额外的反斜杠被删除,所以:
console.log("AC\/DC"); // logs AC/DC
您可以在每个\
之前使用/
来阻止它,例如
json.put("photoUrl", "https:\//mysite.com\/2011\/10\/image.jpg")