2017-06-19 14 views
0

JSONObjectのデータを取得するためにJSONObjectを解析しようとしています。JSONObjectからJSONObjectクラスへのキャスト例外

しかし、問題は、JSONParserはorg.json.simple.JSONParserのクラスであり、JSONObjectはorg.json.JSONObjectにあります。

クラスを避けるためにorg.json内にパーサーが見つかりませんキャストの例外です!

他の方法でソートしてもらえますか?

まったく間違った方向に行っていますか?

私のJSONが見えるお勧めしてください:

{ 
"dataIntents": [ 
{ 
    "intent": "muster.policy.daily", 
    "expr": "Am I supposed to register my attendance daily?" 
}, 
{ 
    "intent": "leave.probation", 
    "expr": "An employee is eligible for how many leaves in 1st year ??" 
}, 
{ 
    "intent": " leave.resigned ", 
    "expr": "Are resigned employees eligible for pro rata leave credit" 
}, 
{ 
    "intent": " muster.deadline.submission ", 
    "expr": "By when should I get my pending leave/Emuster applications 
approved?" 
    } 
] 
} 

私のメインクラス:

public class DLMain { 

public static void main(String[] args) { 

try { 
     JSONParser parser = new JSONParser(); 
     Object obj = 
     parser.parse(newFileReader("/home/cmss/Downloads/data.json")); 
     org.json.JSONObject dataObject = (org.json.JSONObject)obj; 
     System.out.println(dataObject); 
     org.json.JSONArray getArray = 
     dataObject.getJSONArray("dataIntents"); 

     for (int i = 0; i < getArray.length(); i++) { 
      org.json.JSONObject objects = getArray.getJSONObject(i); 
      String a = objects.getString("expr"); 
     } 
     System.out.println(); 
    } catch (Exception e) { 
     System.out.println(e); 
    } 
    } 
} 

私はJSONObjectまたはStringで私の "式expr" キーのすべての値を求めています。

ヘルプは事前に感謝しています:)

+0

org.simple.json.JSONArrayを使用すると、dataObject.getJSONArray( "dataIntents"にエラーが発生しています)の場合、 'org.json.simple.JSONObject'と' org.json.simple.JSONArray' – SpaceBison

+0

@SpaceBisonを試してみてください。 "); – shubham

+0

'org.json.simple.JSONObject'は、別のライブラリからのものであるため、' org.json.JSONObject'とは異なるインターフェースを持っています。詳細については、docsを参照してください:http://alex-public-doc.s3.amazonaws.com/json_simple-1.1/index.html – SpaceBison

答えて

1

なぜPOJOを使用しないのですか?

これまでのところ、あなたのJSONは、意図のリストである、あなたのような何かを持つことができます。

public class Intents { 
    private List<Intent> dataIntents; 
} 

と別の

public class Intent { 
    private String intent; 
    private String expr; 
} 

(コンストラクタとゲッターセッターを生成してください)

をとObjectMapperを直接使用すると、醜いJSON解析をすべて避けることができます。

希望すると助かります!

+0

あなたの提案に感謝しますが、私はpojoクラスを使用したくありません。私は自分のプログラムを軽量化したいと思っています – shubham

+0

あなたのコードを1キロのコードで重み付けしていますか? ;)(冗談ですが)コードは分かりやすいときはるかに優れていますが、それは私の個人的な意見です。 –

+0

実際には私はそれを複雑にしたくありません。私はpojoを作るのではなく、シンプルなJSONライブラリを使いたいだけです。このインスタンスは、そのためにチャットボットを必要とするためのものです。ありがとう:) – shubham