package com.company;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.nio.charset.Charset;
public class MyCoorGiver {
public final String API_URL = "https://maps.googleapis.com/maps/api/geocode/json?address=";
private String cityName;
private final String apiKey = "&key=";
private String fullUrl;
private String rawData;
JSONObject jsonObject;
private double lat;
private double lng;
public String getFullUrl() {
return fullUrl;
}
public MyCoorGiver(String cityName) {
this.cityName = cityName;
this.fullUrl = this.API_URL + cityName + this.apiKey;
}
private JSONObject readFromJsonUrl() throws IOException, JSONException {
InputStream is = new URL(this.fullUrl).openStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
String jsonText = readAll(br);
jsonObject = new JSONObject(jsonText);
return jsonObject;
}
public String readAll(BufferedReader br) throws IOException {
StringBuilder sb = new StringBuilder();
int cp;
while((cp = br.read()) != -1){
sb.append(cp);
}
rawData = sb.toString();
return sb.toString();
}
public String getRaw(){
return rawData;
}
private double getLat() throws IOException, JSONException {
JSONObject myData = readFromJsonUrl();
JSONObject location = myData.getJSONObject("location");
double lat = location.getDouble("lat");
return lat;
}
private double getLng() throws IOException, JSONException {
JSONObject myData = readFromJsonUrl();
JSONObject location = myData.getJSONObject("location");
double lng = location.getDouble("lng");
return lng;
}
public String makeCoorString() throws IOException, JSONException {
lat = getLat();
lng = getLng();
String coor = lat + "," + lng;
System.out.println(coor);
return coor;
}
json URL:https://maps.googleapis.com/maps/api/geocode/json?address=Roshhaayin&key=ENTER_YOUR_API_KEY
json:(我不知道它为什么会这样打印,但在我的电脑上看起来不错)
{
results: [
{
address_components: [
{
long_name: "ראש העין",
short_name: "ראש העין",
types: [
"locality",
"political"
]
},
{
long_name: "פתח תקווה",
short_name: "פתח תקווה",
types: [
"administrative_area_level_2",
"political"
]
},
{
long_name: "מחוז המרכז",
short_name: "מחוז המרכז",
types: [
"administrative_area_level_1",
"political"
]
},
{
long_name: "ישראל",
short_name: "IL",
types: [
"country",
"political"
]
}
],
formatted_address: "ראש העין, ישראל",
geometry: {
bounds: {
northeast: {
lat: 32.117834,
lng: 34.9994091
},
southwest: {
lat: 32.051418,
lng: 34.932534
}
},
location: {
lat: 32.095838,
lng: 34.952177
},
location_type: "APPROXIMATE",
viewport: {
northeast: {
lat: 32.117834,
lng: 34.9994091
},
southwest: {
lat: 32.051418,
lng: 34.932534
}
}
},
place_id: "ChIJTbFX6ioxHRURHn9WS3zh798",
types: [
"locality",
"political"
]
}
],
status: "OK"
}
UPD2:[
表示数组,{
表示JSON语法中的对象。
private double getLat() throws IOException, JSONException {
JSONObject myData = readFromJsonUrl();
JSONArray results = myData.getJSONArray("results");
JSONObject geometry = results.getJSONObject(0).getJSONObject("geometry");
JSONObject location = geometry.getJSONObject("location");
double lat = location.getDouble("lat");
return lat;
}
UPD:您应该使用readline()
方法而不是read()
,请尝试更改代码,如下片断所示。
public String readAll(BufferedReader br) throws IOException {
StringBuilder sb = new StringBuilder();
String cp;
while ((cp = br.readLine()) != null) {
sb.append(cp);
}
return sb.toString();
}
您可以在控制台中打印jsontext
以查看它是否符合JSON语法。也许您可以尝试使用此代码。
private JSONObject readFromJsonUrl() throws IOException, JSONException {
InputStream is = new URL(this.fullUrl).openStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
String jsonText = readAll(br);
//jsonObject = new JSONObject(jsonText);
ObjectMapper objectMapper = new ObjectMapper();
JSONObject jsonObject = objectMapper.readValue(jsonText, JSONObject.class);
return jsonObject;
}
我正在尝试解析一些json,这样我就可以得到json的不同部分。当我使用以下代码时 我得到了一个错误: 你知道为什么我会犯这个错误吗?我能够用在线json验证器验证json
我参考了许多解析此链接的解决方案,但仍然遇到相同的错误。可以给我一个简单的解决方案来解析它。
问题内容: 我引用了许多解决方案来解析此链接,但仍然遇到相同的错误。有谁能给我一个解析它的简单解决方案。 问题答案: 您的问题不是。 您想要做的是打开与“ http://www.json- generator.com/j/cglqaRcMSW?indent=4 ” 的连接,然后解析JSON 响应 。 将不会打开与站点的连接并检索内容。
我很难在以下目录中读取我的json文件:E:\1Programming\padlock\src\padlock\register\info.json 问题是,每次我试图将内容文件作为json对象读取时,都会出现类似文章标题的错误。主要思想是读取这个json文件,在我的json对象中的“users”数组中添加一个新用户,并创建一个基本的本地用户数据库。 **线程“main”org.json.json
我有udpclient类,我尝试获取jsonObject来侦听udpserver,我不知道这段代码是否正确,我的udpclient类是这样的