Java 如何打印json字符串?
我正在做一个学校项目(新手提醒),在那里我需要使用zomato的网站根据我发送的ID获取烹饪的ID和名称。这是演示文件中的代码:Java 如何打印json字符串?,java,json,string,printing,Java,Json,String,Printing,我正在做一个学校项目(新手提醒),在那里我需要使用zomato的网站根据我发送的ID获取烹饪的ID和名称。这是演示文件中的代码: WebServiceConnection web = new WebServiceConnection("xxxxxxxxxxxx"); AcessoDados acesso = new AcessoDados("https://api.zomato.com/v1/cuisines.json", web); String aces = acesso.getCuisin
WebServiceConnection web = new WebServiceConnection("xxxxxxxxxxxx");
AcessoDados acesso = new AcessoDados("https://api.zomato.com/v1/cuisines.json", web);
String aces = acesso.getCuisines(310);
JSONObject obj = new JSONObject();
System.out.println(obj.get(aces));
这里所说的所有方法都是我们老师做的
WebServiceConnection和Acessodos函数获取到Zomato的API和用户密钥的链接。(Zomato API需要密钥才能工作)
“acesso.getCuisines(310)”发送值“310”,方法“getCuisines”应返回一个json字符串,其中包含在其网站中可以找到的所有机构(310是葡萄牙波尔图的ID)
但是,它只在输出中打印“[]”(不带引号)。它应该打印如下内容:
[
{"cuisine_name":"African","cuisine_id":152},
{"cuisine_name":"American","cuisine_id":1},
{"cuisine_name":"Angolan","cuisine_id":951},
{"cuisine_name":"Cafe","cuisine_id":30},
(...)
]
我找不到问题所在,或者我是否犯了任何明显的错误。我在这里遗漏了什么吗?如果
System.out.println(aces)
打印[]
,然后Zomato的API返回一个空响应,这意味着310
不是有效的id
。但是,如果aces
打印一个非空字符串,并且是一个JSON字符串,那么下面的解决方案应该可以工作
您没有解析Zomato API接收到的JSON字符串。相反,您正在创建一个新的JSONObject
,它是空的
尝试执行以下操作:
JSONObject obj = null;
try {
obj = (JSONArray) JSONValue.parseWithException(aces);
System.out.println(obj);
} catch (ParseException e) {
e.printStackTrace();
}
假设:
- 您正在使用
字符串
,为什么不打印它呢?我错过什么了吗?您是真的要分析字符串还是打印它?如果我尝试打印字符串“aces”,它将只打印“[]”。如果我不明确@DanGetz,我不确定问题出在哪里。我想做的是打印GetCuision返回的json字符串。对,但是如果字符串不包含您希望它包含的内容,那么这不是打印的问题,而是API的问题,或者您用来访问API的类的问题,或者您如何使用它们的问题。json对象是空的。初始化参数时需要传入参数。TryJSONObject obj=新的JSONObject(aces)代码>谢谢你的回复。我试过了,在线程“main”java.lang.ClassCastException中出现了这个错误异常:org.json.simple.JSONArray无法转换为org.json.simple.jsonObjectUpdate。将JSONObject
替换为JSONArray
并重试。再次感谢。它再次打印了“[]”。我越来越确信问题一定出在API本身。我要和我的同事谈谈,看看他们是否能把它打印好。对不起,浪费了你的时间