我有两个文本文件:PatientForms。txt和主代码列表。txt。
每个文件的每一行都包含一个JSON字符串。例如,我使用以下方法读入文件的内容并将其存储在SortedMap中。
这是我的服务代码。java代码:
public class ServiceCode {
//class variables
@SerializedName("code")
private String code;
@SerializedName("description")
private String description;
@SerializedName("cost")
private double fullRetailPrice;
//constructor: default - creates an empty code that can be modified by user
public ServiceCode() {
setCode("Empty");
setDescription("Empty");
setFullRetailPrice(0.0);
}
//constructor: non-default - creates a code with values passed to it for code, description, and fullRetailPrice
public ServiceCode(String code, String description, double fullRetailPrice) {
setCode(code);
setDescription(description);
setFullRetailPrice(fullRetailPrice);
}
//setters
public void setCode(String code) { this.code = code; }
public void setDescription(String description) { this.description = description; }
public void setFullRetailPrice(double fullRetailPrice) { this.fullRetailPrice = fullRetailPrice; }
//getters
public String getCode() { return code; }
public String getDescription() { return description; }
public double getFullRetailPrice() { return fullRetailPrice; }
以下是我读取文件并将其放置在地图中的方法:
public class CodeFileHandler {
//static final File dir = new File(".");
static final Gson gson = new Gson();
public SortedMap<String, ServiceCode> loadCodeList() {
SortedMap<String, ServiceCode> map = new TreeMap<>();
List<String> codeStrings = new ArrayList<>();
try {
String loc = "MasterCodeList.txt";
BufferedReader br = new BufferedReader(new FileReader(loc));
for(String line; (line = br.readLine()) != null; ) {
codeStrings.add(line);
System.out.println(line);
}
// line is not visible here.
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
for (String s : codeStrings) {
//used to show that string is a valid JSON format
System.out.println(s);
ServiceCode c = gson.fromJson(s, ServiceCode.class);
map.put(c.getCode(), c);
}
return map;
}
所以,问题是这在IntelliJ中没有错误,但是当我从我的jar文件中运行它时,我得到了一个错误。当我运行程序时,IDE输出的字符串显示了一个有效的格式:
{"code":"D0120","description":"Periodic oral evaluation-established pt","cost":39.0}
当我从jar文件运行它时,我得到了以下信息:
F:\BLCHC\u MCv1\out\artifacts\BLCHC\u MCv1\u jar
在过去的几天里,我查看的所有来源都指向在开始时用“代替{”读取的字符串。事实并非如此。
有人知道为什么会发生这种情况吗?当我访问病人orms.txt时,从不同的文件加载没有问题,即使它是从jar运行的。
使现代化
我将loadCodeList方法更改为:
public void loadCodeList() {
try {
String loc = "MasterCodeList.txt";
BufferedReader br = new BufferedReader(new FileReader(loc));
for(String line; (line = br.readLine()) != null; ) {
ServiceCode s = gson.fromJson(line, ServiceCode.class);
codeMap.put(s.getCode(), s);
}
// line is not visible here.
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
我的代码读取每一行,并使用gson将其从JSON格式的字符串转换为ServiceCode对象。fromJson(字符串、服务代码)
其中String是从文件中读入的JSON字符串。
IntelliJ IDE的输出
IDE输出:无错误
在IDE中,我可以毫无故障地运行一切,并访问SortedMap中的ServiceCode对象。
JAR文件输出JAR文件控制台输出
我没有正确打包jar文件吗?我将Gson Jar包含在我的Jar目录中。
花了很多时间,我终于找到了一种没有错误的方法!我正在阅读如何保存和加载我的地图(保存在一个JSON文件中,包含完整的格式和所有内容),我发现:https://stackoverflow.com/a/32066515/8250178.现在,当我从我的电脑上运行它时,它就工作了。jar文件以及我的IDE。
我试图使用GSON解析一些非常简单的JSON。这是我的代码: 以下是从url返回的JSON: 我得到了一个例外: 有什么想法吗?我是格森的新手。
我试图将JSON字符串转换为HashMap。下面是我的一些代码: 在这些行的最后一行(我在其中设置数据)抛出异常。 JSON字符串是 {"body":"body","start Date":"2014-05-30 11:00:00","endDate":"2014-05-30 12:00:00","位置":"位置","主题":"主题!"} 我得到的例外是 线程“main”java中出现异常。朗,反
使用改装库来使用一项服务,我为我的界面、模型以及如何使用界面添加了代码。 我不断收到一个GSON抛出的“预期的BEGIN_对象,但是BEGIN_数组” 界面 模范公立班学生{ 我怎么称呼方法
当我将json转换为gson时,我得到了以下错误: E/AndroidRuntime(1142):com.google.gson.jsonSyntaxException:java.lang.IllegalStateException:预期为BEGIN_ARRAY,但BEGIN_OBJECT位于第1行第51列
问题 你想改变对象实例的打印或显示输出,让它们更具可读性。 解决方案 要改变一个实例的字符串表示,可重新定义它的 __str__() 和 __repr__() 方法。例如: class Pair: def __init__(self, x, y): self.x = x self.y = y def __repr__(self):
问题内容: 我试图将字符串转换为日期时间对象。我从新闻提要中获取的字符串格式如下:“星期四,2014年10月16日美国东部时间01:16:17” 我尝试使用datetime.strptime()进行转换。即 并得到以下错误: 追溯(最近一次通话最近): 文件“”,第1行,位于datetime.strptime(’Thu,16 Oct 2014 01:16:17 EDT’,’%a,%d%b%Y%H: