//Open url and fetch JSON data
String s = "MY_URL_HERE";
URL url = new URL(s);
Scanner scan = new Scanner(url.openStream());
String str = new String();
while (scan.hasNext())
{
str += scan.nextLine();
}
scan.close();
System.out.println(str);
str会打印一个字符串,如:
{"coord":{"lon":-80.25,"lat":43.55},"weather":[{"id":800,"main":"Clear","description":"Sky is Clear","icon"...ect
我正在使用json_simple-1.1.jar
如何实际使用此字符串来提取我选择的值?如果我想拉出“描述”或“天气”。
我尝试过以下代码:
https://code.google.com/p/json-simple/wiki/DecodingExamples
这些对我不起作用,我收到错误
org.json.simple.JSONObject cannot be cast to org.json.simple.JSONArray
答案 0 :(得分:3)
你的字符串不是ant json数组表示,而是json对象本身。那是org.json.simple.JSONObject cannot be cast to org.json.simple.JSONArray
描述的错误。链接中的示例描述了一个数组,该数组的每个元素都是一个对象:
考虑Jackson libray,它非常便于将Java对象转换为JSON
下面表示一个数组,该数组的每个元素都是一个对象:
[
{
color: "red",
value: "#f00"
},
{
color: "green",
value: "#0f0"
}
]
or
[
{
"color": "red",
"value": "#f00"
},
{
"color": "green",
"value": "#0f0"
}
]
下面代表对象
{
color: "red",
value: "#f00"
}
or
{
"color": "red",
"value": "#f00"
}
有关json字符串的不同表示,请参阅here
使用jackson库的代码示例
import java.io.IOException;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
public class TestString {
public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException {
String s="{\"coord\":{\"lon\":-80.25,\"lat\":43.55},\"weather\":[{\"id\":800,\"main\":\"Clear\",\"description\":\"Sky is Clear\"}]}";
//String s="[{\"coord\":\"test\",\"lon\":-80.25}]";
ObjectMapper mapper = new ObjectMapper();
Object obj = mapper.readValue(s, Object.class );
System.out.println("terst"+ obj );
}
}
答案 1 :(得分:2)
对于将来看这个的人来说,
使用json_simple-1.1.jar
String s = "YOUR_URL_HERE";
URL url = new URL(s);
Scanner scan = new Scanner(url.openStream());
String str = new String();
while (scan.hasNext())
{
str += scan.nextLine();
}
scan.close();
str现在包含(在我的情况下)一个包含更多对象的对象(**当我确定时会编辑,这就是我的想法)
现在使用此代码并使用http://codebeautify.org/jsonviewer
JSONObject obj = (JSONObject) JSONValue.parse(str);
String info = obj.get("object_name_you_wish_to_call").toString();
我看到上面的代码将输出另一个包含该特定对象中所有信息的对象。在这种情况下,“object_name_you_wish_to_call”中的所有对象
当我弄清楚如何检索特定值时,我会再次编辑。
答案 2 :(得分:0)
您可以使用以下方式执行此操作:
Java类:
URL = "www.vulnuryrweb.com"
char1 = Left(URL, 1)
char2 = Mid(URL, 2, 1)
isValid = ( char1 = "/" And char2 <> "/" And char2 <> "\" )
MsgBox isValid