请不要将它标记为重复,我会经历许多这些相关的帖子,但徒劳无益。我是Android/Java编程新手,需要知道如何将json映射转换为java hashmap。请参考下面的代码:获取一个例外:com.google.gson.JsonSyntaxException:com.google.gson.stream.MalformedJsonException:期望在第1行第24列的':'
HttpPost httpPost1 = new HttpPost(
"http://www.mywebsite.com/something.json");
Log.i("MAP", "Hash call");
List<NameValuePair> nameValuePair1 = new ArrayList<NameValuePair>(1);
nameValuePair1.add(new BasicNameValuePair("id_token", token));
try {
httpPost1.setEntity(new UrlEncodedFormEntity(nameValuePair1));
} catch (UnsupportedEncodingException e) {
// writing error to Log
e.printStackTrace();
}
// Making HTTP Request
try {
HttpResponse response1 = httpClient.execute(httpPost1);
BufferedReader reader = new BufferedReader(new InputStreamReader(response1.getEntity().getContent(), "UTF-8"));
StringBuilder builder = new StringBuilder();
for (line = null; (line = reader.readLine()) != null;) {
// builder.append(line).append("\n");
System.out.println(line);
Log.i("Line1", "line1 "+ line);
class Data {
private Email email;
private String result;
// Add/generate getters and setters.
class Email {
private List<Alert> alerts;
private String session;
// Add/generate getters and setters.
}
class Alert {
private Long AlertID;
private String tim;
private String lng;
private String lat;
}
}
Gson gson=new Gson();
String json="{\"AlertID\":\"tim\",\"lng\",\"lat\"}";
Map<String,String> map=new HashMap<String,String>();
java.lang.reflect.Type type = new TypeToken<Map<String, String>>(){}.getType();
Map<String, String> myMap = gson.fromJson("{\"AlertID\":\"tim\",\"lng\",\"lat\"}", type);
System.out.println(json);
Log.i("JAVA Hash", "Java Hash call");
}//Closing for loop//line
JSONTokener tokener = new JSONTokener(builder.toString());
JSONArray finalResult = new JSONArray(tokener);
// writing response to log
Log.i("Http Response:", response1.toString());
Log.i("JSON returns: ", "JSON returns");
} catch (ClientProtocolException e) {
// writing exception to log
e.printStackTrace();
} catch (IOException e) {
// writing exception to log
e.printStackTrace();
}
需要被转换成散列映射的JSON如下:
{\"[email protected]\":\"lat\":0.0,\"lng\":0.0,\"tim\":"2014-10-02T10:38:11.437Z"},{"lat":0.0,"lng":0.0,"tim":"2014-10-02T08:56:38.459Z"},{"lat":0.0,"lng":0.0,"tim":"2014-10-02T08:47:18.713Z"},{"lat":0.0,"lng":0.0,"tim":"2014-10-02T08:43:58.145Z"},{"lat":0.0,"lng":0.0,"tim":"2014-10-02T08:34:08.798Z"}]}
只是为了使JSON更易读:
[email protected]
纬度: 0 lng:0 tim:“2014-10-01T16:55:15.002Z”
纬度:0 LNG:0 恬: “2014-10-01T16:18:07.290Z”
纬度:0 LNG:0 恬: “2014-10-01T12:04:06.364Z”
纬度:0 LNG:0 恬: “2014-10-01T11:58:04.455Z”
纬度:0 LNG:0 恬:“2014-10-01T11:46:24.560Z “
在这方面的任何帮助将不胜感激。
我试过了,但没有帮助。你能否建议我应该如何将json转换为java哈希? – user1903022 2014-10-02 11:25:14
我认为代码看起来不知何故如上所示。请注意我在JSON结构上的更新。如果你的第一个标识符是一个电子邮件地址,我希望有一些问题,所以我将它改为“email”。 – Trinimon 2014-10-02 13:30:46