我正在使用Orchestration Design,但发现它没有我需要的所有功能,所以我们有很多硬编码的JAVA。
我已经阅读了几篇讨论类似错误的帖子,如下所示。
org.codehaus.jettison.json.JSONException:JSONObject [“customer”] not not 结果
我已经尝试了之前发布的几种解决方案,但仍然无法解决这个问题。我只有2周的Java培训,而且几乎没有Java的实际经验。因此,如果您能够将其分解或提供更多指导,我将非常感激。 这是我的数据:
{"statusCode":"200",
"statusMessage":"OK",
"data":
{"customer":
[{"name":"John Smith",
"dob":"06-14-2000",
"phones":
[{"phoneID":"d3dd30b1-cd47-46f5-8e06-1fd5e8631203",
"phoneNumberTypeCode":"3",
"phoneNumber":"2162100834",
"sortOrderCode":"1"},
{"phoneID":"0153632c-ae8f-4b12-a68f-1ab33fa4e7e3",
"phoneNumberTypeCode":"3",
"phoneNumber":"3306973358",
"sortOrderCode":"2"}]},
{"name":"same five",
"dob":"06-01-1968",
"phones":
[{"phoneID":"83c49dd0-d308-4e88-b25e-4ddff53bf124",
"phoneNumberTypeCode":"3",
"phoneNumber":"3306973358",
"sortOrderCode":"1"}]},
{"name":"same five",
"dob":"06-01-1968",
"phones":
[{"phoneID":"ac61e9ce-ea4e-46c3-85d7-cd07bdcbf54e",
"phoneNumberTypeCode":"3",
"phoneNumber":"3306973358",
"sortOrderCode":"1"}]},
{"name":"kjhdv askljdh",
"dob":"06-01-1968",
"phones":
[{"phoneID":"8706e547-c9fe-4844-84a8-f4c78abd7277",
"phoneNumberTypeCode":"3",
"phoneNumber":"3306973358",
"sortOrderCode":"1"}]}]}}
此时我只对进入DOB感兴趣。我需要将其与客户输入的数据进行比较,以尝试提取正确的帐户。稍后我将需要获取其余的数据,但我希望一旦我理解了如何进入DOB,我就可以自己解决剩下的问题了。
这是我写的代码。我有很多注释掉的代码,这是我在这个论坛上找到的例子,并试图开始工作。每个版本都给我一个错误
找不到JSONObject [“customer”]。
我确实知道其他帖子也有同样的问题,但我无法让任何解决方案适合我(可能是因为我缺乏经验)
public String getAccount(String requestUrl, String token) throws Exception {
String statusmessage = "";
try {
CloseableHttpClient httpClient = getHttpClient();
HttpGet getRequest = new HttpGet(requestUrl);
getRequest.addHeader("accept", "application/json");
getRequest.addHeader("Authorization", token);
HttpResponse response = httpClient.execute(getRequest);
if (response.getStatusLine().getStatusCode() != 200) {
System.out.println("StatCode = "
+ response.getStatusLine().getStatusCode());
return "500";
//throw new Exception("Failed : HTTP error code : " +
//response.getStatusLine().getStatusCode());
}
String responseStr = EntityUtils.toString(response.getEntity());
System.out.println("RESPONSE *** " + responseStr);
String jsonResp = responseStr;
JSONObject jsonObj = new JSONObject(jsonResp);
statusmessage = jsonObj.get("statusMessage").toString();
System.out.println("StatusMes : " + statusmessage);
String data = jsonObj.get("data").toString();
System.out.println("Data : " + data);
//String customer = jsonObj.get("customer").toString();
JSONArray customer = jsonObj.getJSONArray("customer");
for(int i=0;i<customer.length();i++)
{
JSONObject jb1 = customer.getJSONObject(i);
String name = jb1.getString("name");
}
//JSONObject jObject = new JSONObject(response);
// JSONArray jsonArray = jObject.getJSONObject("response").getJSONArray("Message");
// for (int i = 0; i < jsonArray.length(); i++) {
// JSONObject objJson = jsonArray.getJSONObject(i);
//}
//TopTenGetterSetter obj = new TopTenGetterSetter();
/* JSONArray Customer = jsonObj.getJSONArray("customer");
String customer = Customer.getJSONObject(0).getString("name");
for (int i = 0; i < Customer.length(); i++) {
String name = Customer.getJSONObject(i).getString("name");
System.out.println(name);
String dob = Customer.getJSONObject(i).getString("dob");
System.out.println(dob);
String phones = Liste.getJSONObject(i).getString("phones");
System.out.println(phones);
String Position = Liste.getJSONObject(i).getJSONObject("Position").toString();
System.out.println(Position);
*/
//JSONObject outerObject = new JSONObject(jsonResp);
//JSONObject innerObject = outerObject.getJSONObject("JObjects");
//JSONArray jsonArray = innerObject.getJSONArray("JArray1");
//for (int i = 0, size = jsonArray.length(); i < size; i++) {
// JSONObject objectInArray = jsonArray.getJSONObject(i);
// "...and get their component and their value."
//String[] elementNames = JSONObject.class.getName(objectInArray);
//for (String elementName : elementNames) {
// String value = objectInArray.getString(elementName);
//}
谢谢,
答案 0 :(得分:2)
找不到JSONObject [“customer”],因为它不存在。在您的JSON上,“客户”位于不在根目录下的“数据”下。
答案 1 :(得分:0)
试试这个:)
JSONObject mainNode = new JSONObject(jsonResp);
JSONObject dataNode = mainNode.getJSONObject("data");
JSONArray customerNode = dataNode.getJSONArray("customer");
for(int i=0;i<customerNode.length();i++)
{
JSONObject childNode = customerNode.getJSONObject(i);
String name = childNode.getString("name").toString();
}