android - 关于fastJson解析Json字符串的问题。JSONException: exepct '[', but {
伊谢尔伦
伊谢尔伦 2017-04-17 15:46:37
0
4
1388
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全員に返信(4)
巴扎黑

API アドレスによると http://www.imooc.com/api/Teacher?type=4&num=30

返された json データには 2 つの層があり、解析したのは 1 つの層だけです。当然、データ エラーが発生します。


DataBean

の 2 つのレイヤーを作成する必要があります リーリー

ルートグループ

リーリー

上記は以下のツールで生成されています(やるところはたくさんあります)。詳細については、付録 1
を参照してください。 Ps. Android Studio には、より便利なプラグイン GsonFormat があります (座って自分で動かすことができます)。詳細については、付録 2 を参照してください

次にデータ取得場所(实际上你写的只有这一段代码就解析好了。。)

リーリー

以上です。


付録

付録 1: http://www.bejson.com/json2javapojo/
付録 2: GsonFormat概要: http://www.jianshu.com/p/b83ea5e32ee1


余談になりますが、多くのネットワーク リクエスト フレームワークには標準の json リクエスト メソッドが付属しています。
個人的には、エンティティクラスは自分で作成したほうが便利だと思います。 :-D

いいねを押す +0
刘奇

fastJson を使用したことはありませんが、Gson を使用して解析すると非常に高速です。 。 。
JSON データ形式に従って次の Bean を定義します。
注: 内部的にネストされたクラスは静的である必要があります。

リーリー

Gson を使用して解析します:

リーリー

このようにして取得した Bean オブジェクト temp は List<Info> ですが、
temp.getInfo().get(i) を使用すると内部クラス Info を取得できます。 。 。 。
シャオバイは初めて質問に答えました。 。 。 。私を許してください。 。 。

いいねを押す +0
刘奇

datas = JSON.parseArray(jsonObject.toString(), Bean.class);

jsonObject.toString() が元の JSON 文字列の場合、この値で何が得られるかを見てください。

いいねを押す +0
小葫芦

まず、JsonArray data=Json.getJsonArray("data") を直接使用することは完了できません...

機能するメソッドは次のとおりです (Json データをよく理解していないので、勉強する必要があります): パラメーターによって返された jsonObject を FastJson の JsonObject に変換すると、3 つの項目のコレクションが得られます。これをどう理解しますか?次に、このコレクションから「データ」配列を取得し、FastJson の JsonArray を使用してコレクションに変換します...

リーリー

本当の知識を見つけるには、まだ勉強して研究する必要があります

=======================

後で、この Json データは次のようになったことがわかりました。これは 3 つのデータの集合であり、データ集合を直接取得するのは間違っています...

====================================
データのデータを取得した後、 JavaBeans を直接関連付けることができるため、従来の方法に比べて面倒なコードを大幅に節約できます。ここでは自動的に関連付けられます。

リーリー

これは注意すべき重要な点であり、原文でも間違っています。

List<Bean> datas=null; 最初に新しい ArrayList を作成してからデータを関連付ける必要はありません。データが自動的に関連付けられると、データが自動的に保存されます。 ..

=================================
fastJson の一般的に使用されるメソッドについてメモを投稿します

リーリー

Json 文字列データがある場合は、まずそれを解析してから、fastJson 操作を実行する必要があります。たとえば、この例では、volley によって返された jsonOject を直接使用することはできません。これは単なる文字列です。 ? ?ただし、fastJson の解析と変換後には使用できます...

==============================================

ベストアンサーを与えたネチズンは、JsonFormat が非常に便利だと紹介しました...JsonFormat を使用すると、すべての問題が解決されます。

fastJson の解決策は次のとおりです。
JsonFormat を使用して Bean などの javaBean クラスを事前に生成し、次の 2 行のコードで完成させます。

リーリー

=========================================== ===
上記のヒントに追加するには、Gson を使用して問題を解決します。Gson には 3 行のコードが必要なようです:
JsonFormat の操作は同じです...

リーリー

要約すると、fastJson は 2 文のコードでデータを取得でき、Gson は 3 文でデータを取得できます

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート