Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何打印json字符串?_Java_Json_String_Printing - Fatal编程技术网

Java 如何打印json字符串?

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

我正在做一个学校项目(新手提醒),在那里我需要使用zomato的网站根据我发送的ID获取烹饪的ID和名称。这是演示文件中的代码:

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对象是空的。初始化参数时需要传入参数。Try
JSONObject obj=新的JSONObject(aces)谢谢你的回复。我试过了,在线程“main”java.lang.ClassCastException中出现了这个错误异常:org.json.simple.JSONArray无法转换为org.json.simple.jsonObjectUpdate。将
JSONObject
替换为
JSONArray
并重试。再次感谢。它再次打印了“[]”。我越来越确信问题一定出在API本身。我要和我的同事谈谈,看看他们是否能把它打印好。对不起,浪费了你的时间