1

LINQ の結果をシリアル化し、この json 文字列を返す関数を含む asp.net WCF を取得しました。

"[{\"intPromoter\":1,\"varID\":\"DP900001\",\"varName\":\"Jay Chou\"}]"

しかし、私が学んでいるjsonとは少し違うように見えるので、Android Javaでこのコードを使用して「行」を追加しました

  text = "{\"rows\":" + text  + "}";

そしてこうなる

{"rows":"[{\"intPromoter\":1,\"varID\":\"DP900001\",\"varName\":\"Jay Chou\"}]"}

したがって、以下の関数を使用して json 配列に解析すると、java.lang.string を jsonarray に変換できません。したがって、.net の文字列を json で読み取る前に特定の形式に変更する必要があるのか​​ 、最初に「行」を追加せずに直接的な方法があるのか​​ はわかりません。前もって感謝します。

JSONObject jObject = new JSONObject(results);
JSONArray jArray = jObject.getJSONArray("rows"); //This LINE GIVE error,

for (int i=0; i < jArray.length(); i++)
{
JSONObject oneObject = jArray.getJSONObject(i);

int intPromoter =Integer.parseInt(oneObject.getString("KEY_intPromoter"));
String varID = oneObject.getString("KEY_varID");
String varName = oneObject.getString("KEY_varName");
}
4

1 に答える 1

2

最終的な文字列には、配列が二重引用符で囲まれています。これは、配列ではなく文字列であることを意味します。これらを削除すると、正常に動作するはずです。

例えば

{"rows":[{"intPromoter":1,"varID":"DP900001","varName":"Jay Chou"}]}

また、サーバーからの文字列から JSONArray を直接インスタンス化することにより、JSONObject の必要性を完全に取り除くことができるはずです。

JSONArray rows = new JSONArray(json);

詳細については、次のドキュメントを参照してください。

http://developer.android.com/reference/org/json/JSONArray.html

于 2013-03-14T08:23:19.393 に答える