gpt4 book ai didi

javascript - Gson.fromJson 卡在线上

转载 作者:行者123 更新时间:2023-12-02 08:58:18 27 4
gpt4 key购买 nike

我正在使用 gson 来解析来自 HttpExchange 对象的数据。但是,在我的 IDE 中,我在使用 .fromjson 的行处设置了一个断点,并且它永远不会越过该行。它只是一次又一次地回到它。

public void handle(HttpExchange exchange) throws IOException {
System.out.println("/createTest");
if (exchange.getRequestMethod().toLowerCase().equals("post")){
System.out.println("get request");

InputStream reqBody = exchange.getRequestBody();
String reqData = readString(reqBody);

Gson gson = new Gson();
TestRequest testRequest = new TestRequest();
System.out.println(reqData);
testRequest = gson.fromJson(reqData, TestRequest.class);
System.out.println("gson done");

//Get the test
TestService testService = new TestService();
TestResponse result = testService.execute(testRequest);}

这是 TestRequest.java 的更新后的 java

import Model.TestParameter;

import java.util.ArrayList;
import java.util.HashMap;

public class TestRequest {
private HashMap<ArrayList<Integer>, book> sections;
private int difficulty;
private boolean closedBook;
private int length;
private int assortment;

我使用 JSONlint 来检查我提供给它的 JSON 数据是否正确,事实确实如此。对于好奇的人来说,这是:

{
"sections": [
{
"chapters": [
11,
12,
20,
21,
22
],
"book": "NEPHI1"
},
{
"chapters": [
20,
29
],
"book": "NEPHI2"
},
{
"chapters": [
1
],
"book": "OMNI"
}
],
"difficulty": 3,
"closedBook": true,
"length": 21,
"assortment": 0
}

最佳答案

private HashMap<ArrayList<Integer>, book> sections;

Gson 认为你的 sections 字段应该是一个 map ...

"sections": [

...但是您有一个项目数组,每个项目都是一个带有 chapters (整数数组)和 book (字符串)的对象。 MapHashMap 采用两个通用参数,其中第一个是键,第二个是值。在 JSON 中,键几乎总是 String ,就像在这个表示 HashMap<String, Integer> 的 JSON 中一样:

{
"abc": 123,
"def": 456
}

如果您想匹配您提供的 JSON,则需要 sections 如下所示:

public class Section {
private ArrayList<Integer> chapters;
private String book;
}
private ArrayList<Section> sections;
<小时/>

However, in my IDE I set a breakpoint at the line where I use .fromjson, and it never moves past that line.

听起来您在评论中理解了 try/catch ,但是对于您的问题标题“卡在线上”以及问题中的这句话,我将在此处进行总结。

当 Java 应用程序中发生意外或错误时(如 com.google.gson.JsonSyntaxException 中的“异常”),它将查找最近的封闭 try/catch block 。如果当前方法中没有,它将检查调用当前方法的方法,然后检查调用那个方法的方法,依此类推。 Web 服务器应用程序通常有一个封闭的 try/catch ,这将导致像 500 这样的错误代码,如果没有任何东西捕获错误,它可能会终止程序。您可以在 Java tutorial "What is an Exception?" 中了解有关异常的更多信息,但它“卡在”该行的外观可能是由于它进入默认异常处理程序并且永远不会返回到“引发”异常的方法。

关于javascript - Gson.fromJson 卡在线上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60355361/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com