我有一个应用程序,应该显示一个字符串在按钮点击后,在textview中,而是显示JSON格式的代码而不是未编码的JSON。这里是我的Android代码将JSON转换为来自sql数据库的字符串由php
package game.com;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class JSONtestActivity extends Activity {
String result = "";
InputStream is = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn = (Button) findViewById(R.id.button1);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TextView one = (TextView) findViewById(R.id.textView1);
returnJson();
//end of onClick
}
//end of onClickListener
});
//end of oncreate()
}
public void returnJson(){
TextView one = (TextView) findViewById(R.id.textView1);
try{
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("http://10.0.2.2/textures_story_list.php");
HttpResponse response = httpClient.execute(httpPost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
}catch(Exception e) {
one.setText("error3");
}
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "/n");
}
is.close();
result = sb.toString();
}catch(Exception e) {
one.setText("error2");
}
try{
JSONArray jArray = new JSONArray(result);
for(int i = 0;i<jArray.length();i++){
JSONObject json_data = jArray.getJSONObject(i);
Log.i("log_tag","story_name: "+json_data.getString("story_name")
);
result += "\n" + jArray.getJSONObject(i);
}
one.setText(result);
}
catch(JSONException e) {
one.setText("error1");
}
return;
//end of returnJson()
}
//end of class body
}
和我的PHP
<?php
mysql_connect("127.0.0.1","root");
mysql_select_db("textures_story_list");
$sql=mysql_query("SELECT story_name FROM story_list WHERE story_name LIKE 'sto%'");
while($row=mysql_fetch_assoc($sql)) $output[]=$row;
print(json_encode($output));
mysql_close();
?>
有人可以为Y帮助它不显示名称,而不是JSON格式 这是它显示在TextView的,而不是故事,一个,故事两等
[{"story_name":"Story One"}
{"story_name":"Story Two"},
{"story_name":"Story Three"},
{"story_name":"Story Four"},
{"story_name":"Story Five"},
{"story_name":"Story Six"}]/n{"story_name":"Story One"},
{"story_name":"Story Two"},
{"story_name":"Story Three"},
{"story_name":"Story Four"},
{"story_name":"Story Five"},
{"story_name":"Story Six"}
让我直截了当地看到:在打印之前,您在检索到的记录上使用了json_encode(),然后想知道为什么字符串显示为json编码? – 2012-02-06 07:22:43
是否日志条目Log.i(“log_tag”,“story_name”'...显示正确的字符串值或它表现出相同的问题? – 2012-02-06 07:49:06
是的我编码它在PHP到JSON然后发送到Android与httppost并需要现在解码到正常的英语,但不知道如何做到这一点,任何帮助将不胜感激 – daniel 2012-02-06 08:19:06