【发布时间】:2018-09-22 10:44:48
【问题描述】:
我是 JSON 数据格式和 java 编程语言的新手;因此,我找不到有效的答案。实际上,我必须阅读这个APIhttps://www.doviz.com/api/v1/currencies/all/latest,并从这个API中获取一些重要的内容。因此,我决定使用 google 的 GSON 类,并编写了这段代码。
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.Scanner;
import com.google.gson.Gson;
public class Main {
public static void main( String[] args ) throws Exception{
String line = "";
String jsonString = "";
URL myUrl = new URL("https://www.doviz.com/api/v1/currencies/all/latest");
BufferedReader reader = new BufferedReader( new InputStreamReader(myUrl.openStream()) );
while( (line = reader.readLine()) != null ){
System.out.println(line);
jsonString += line;
}
reader.close();
jsonString = jsonString.substring(1, jsonString.length() - 1);
Gson gson = new Gson();
Currency json = gson.fromJson(jsonString, Currency.class);
}
}
public class Currency {
public double getSelling(){
return selling;
}
public double getBuyiing(){
return buying;
}
public String getCode(){
return code;
}
private double selling;
private transient long update_date;
private transient int currency;
private double buying;
private transient double change_rate;
private transient String name;
private transient String full_name;
private String code;
}
此代码会导致错误,据我猜测,错误的主要原因是我没有像这样在子字符串中放置反斜杠:"{\"brand\":\"Jeep\", \"门\": 3}"
What I am wondering is why we need to put these backslash ?
【问题讨论】:
-
错误是什么?
-
"此代码导致错误" 任何原因您不能在问题中包含错误消息?它是否包含一些敏感信息,如密码或其他?在这种情况下,您可以将它们替换为
PASSWORD而不是真实内容。 -
BTW
jsonString += line;对于较长的字符串来说效率非常低,因为对于每个新行,它需要复制所有以前的内容,然后添加新行。看看Why StringBuilder when there is String?
标签: java json gson json-deserialization