2014-09-30 6 views
0

Я конвертирую xml-сообщение в объект json, и я хочу прочитать все значения из объекта json, как я могу прочитать все значения Example-pfirstname = «Anssi»; Я хочу прочитать все значения в строке json. Я использую JSONObject конвертироватьКак получить значения из json

JSONObject xmlJSONObj = XML.toJSONObject(xml1); 

{ 
"event": { 
    "eventpermits": { 
     "eventpermit": { 
      "pfirstname": "Anssi", 
      "pmodifydate": { 
       "minute": 20, 
       "second": 40, 
       "month": 6, 
       "year": 2012, 
       "hour": 11, 
       "day": 21 
      }, 
      "pplates": "ABC123", 
      "genddate": { 
       "minute": 59, 
       "second": 59, 
       "month": 12, 
       "year": 9999, 
       "hour": 23, 
       "day": 31 
      }, 
      "gname": "Visy", 
      "permitreason": 2, 
      "penddate": { 
       "minute": 0, 
       "second": 0, 
       "month": 6, 
       "year": 2012, 
       "hour": 17, 
       "day": 21 
      }, 
      "accesscheckdate": { 
       "minute": 20, 
       "second": 45, 
       "month": 6, 
       "year": 2012, 
       "hour": 11, 
       "day": 21 
      }, 
      "pstartdate": { 
       "minute": 0, 
       "second": 0, 
       "month": 6, 
       "year": 2012, 
       "hour": 12, 
       "day": 20 
      }, 
      "id": 13, 
      "selected": 1, 
      "plastname": "Huttunen", 
      "gstartdate": { 
       "minute": 0, 
       "second": 59, 
       "month": 6, 
       "year": 2012, 
       "hour": 0, 
       "day": 20 
      }, 
      "points": 1, 
      "eventnumber": 4, 
      "gaccesslevel": 0, 
      "accesscheckid": 17, 
      "pid": 4, 
      "pcreatorname": "VisyXMLGate", 
      "pcpallowed": 1, 
      "gcheckpointallowed": 1, 
      "gid": 1, 
      "pdeletedate": { 
       "minute": 0, 
       "second": 0, 
       "month": 6, 
       "year": 2012, 
       "hour": 0, 
       "day": 21 
      }, 
      "povt": "X2", 
      "pcompany": "Visy", 
      "pcreationdate": { 
       "minute": 19, 
       "second": 27, 
       "month": 6, 
       "year": 2012, 
       "hour": 11, 
       "day": 21 
      } 
     } 
    }, 
    "accessdecision": { 
     "cppolicy": "OPENFORPERMIT", 
     "id": 17, 
     "permitreason": 2, 
     "date": { 
      "minute": 20, 
      "second": 45, 
      "month": 6, 
      "year": 2012, 
      "hour": 11, 
      "day": 21 
     }, 
     "eventnumber": 4, 
     "frontplate": "ABC123" 
    }, 
    "permitreason": 2, 
    "checkpoint": { 
     "messagedirection": "IN", 
     "id": 1, 
     "direction": "IN", 
     "tag": "IN1", 
     "name": "Entrance 1", 
     "policy": "OPENFORPERMIT", 
     "sourceareaid": 1, 
     "targetareaid": 2 
    }, 
    "permitid": 4, 
    "frontlicenseplates": { 
     "licenseplate": { 
      "formatted": "ABC123", 
      "nationality": "FIN", 
      "unformatted": "", 
      "confidence": 1.1 
     } 
    }, 
    "date": { 
     "minute": 18, 
     "second": 29, 
     "month": 6, 
     "year": 2012, 
     "hour": 11, 
     "day": 21 
    }, 
    "eventnumber": 4, 
    "ovt": "VisyAccessGate" 
} 
} 
+0

Что вы подразумеваете под "всеми значениями"? Какие ценности вы хотите? –

+0

Это означает, что при eventpermit я хочу читать минуты, час, второй, месяц, год. – Vskiran

+0

Является ли этот фиксированный шаблон/формат json? или может меняться во времени? –

ответ

0

Согласно вашей струнной структуре Json, все форматируются JSONObject {} и не JSONArray [] содержащих.

Вот пример, чтобы получить значение pfirstname, а вот так, вы можете попробовать другие значения самостоятельно.

//firstly get 'event' JSONObject 
JSONObject event = xmlJSONObj.getJSONObject("event"); 

//from 'event' JSONObject, get 'eventpermits' JSONObject as it is enclosing with {} 
JSONObject eventpermits = event.getJSONObject("eventpermits"); 

//to get 'eventpermit' JSONObject 
JSONObject eventpermit = eventpermits.getJSONObject("eventpermit"); 

//to get JSONObject of 'pmodifydate' AND one string value of 'pfirstname' 
JSONObject pmodifydate = eventpermit.getJSONObject("pmodifydate"); 

//string value of 'pfirstname' 
String pfirstname = eventpermit.getString("pfirstname"); 

При доступе значения с его типом, в соответствии с вашей строки структуры JSON, вы можете использовать правую аксессор с именем поля -

  • GetString()

  • getBoolean ()

  • getInt(), getLong(), getDouble()

См. Api here

+0

Я в замешательстве, что вы можете помочь я из этого вопроса, то есть, я непосредственно читаю xml-сообщение, используя xpath и значения чтения, и я пытаюсь сделать с json из-за объекта с небольшим весом, поэтому лучший подход к чтению значений. – Vskiran

+0

@ Vskiran Я предпочитаю путь преобразования строки xml в объект JSON, а затем доступ к требуемым значениям. Это элегантный и простой в обслуживании код и готовность, чем использование «xpath». Или вы можете рассказать о своем замешательстве как о новом посту !!!! –

+0

Да Спасибо @Born Для этого мне нужно подождать еще 90 минут для нового сообщения – Vskiran

Смежные вопросы