jsonオブジェクトをjavascriptからajaxを使用してJavaサーブレットに渡しています。私のJavaではJava JSONArray from Javascript JSONArray
var jsonObj = JSON.stringify(objArray); //Then I pass it to Java using ajax.
私は、その配列をループして、アレイからJSONオブジェクトの1を引くしようとしたとき、私はエラーを取得しています、そしてjsonarrayを作成し、リクエストからJSON文字列を取得しています。コードの残りの部分は非常に長いので
String dataObj = request.getParameter("obj");
String sql = request.getParameter("sql");
ArrayList<Object> returnArray = new ArrayList<Object>();
int key;
//Get type of object being passed.
JSONArray jsonArray = JSONArray.fromObject(dataObj);
for(int i=0; i<jsonArray.size(); i++) {
String obj = new Gson().toJson(jsonArray.getJSONObject(i)); //This is where i'm getting an error
String className = getClassName(jsonArray.getJSONObject(i));
Class targetClass = null;
try {
targetClass = Class.forName(className);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//Create Object
Object data = new Gson().fromJson(obj, targetClass);
私はループのために、関連するコードを掲示していますが閉じていない、とこれは私がエラーを取得してい一環です。
net.sf.json.JSONException: JSONArray[0] is not a JSONObject.
json配列がjavascriptから渡されたときの外観です。これはjsonArrayオブジェクトのprintlnです。
[{"number":"(123) 456-7050","type":"Home","contactId":1,"id":16662,"className":"beans.PhoneNumber","position":0}]
このコードは1つのオブジェクトで動作します。しかし、私は2つ以上を取得するとすぐに、私のエラーが表示されます。
[[{"number":"(123) 456-7050","type":"Home","contactId":1,"id":16662,"className":"beans.PhoneNumber","position":1},{"number":"(555) 555-1233","type":"Mobile","contactId":1,"id":16656,"className":"beans.PhoneNumber","position":0},{"number":"(999) 999-9999","type":"Home","contactId":1,"id":16664,"className":"beans.PhoneNumber","position":3},{"number":"(222) 222-2222","type":"Home","contactId":1,"id":16666,"className":"beans.PhoneNumber","position":4}]]
私は複数のオブジェクトを渡しているときのように見えますが、それは配列の配列を作成します。なぜそれが動作しないのでしょうか?しかし、私はjavascriptからjsonarrayを渡しているとき、どうすればそれを避けることができますか? dataObjだけを使用すると、サイズにアクセスすることができず、ループすることもありません。
JSONArrayをJavaで作成すると、配列の配列が作成されます。だから元のdataObj文字列はすでに配列ですが、私はそれをforループなどを使用することができるようにjavaで使用するために変換するにはどうすればよいですか? – ryandlf
JavaScriptをご覧ください。配列にオブジェクトを追加するバグがあるようです。あなたはJavaScriptの文脈を提供していないので、私は何も教えてくれません。 –
私のjavascriptでは、私はstringifiedを使って適切なjsonArrayを考えているオブジェクトの配列を変換しています。これが問題であることを確認しましたが、回避する方法はわかりません。私はjavascriptで配列のstringifyを呼び出す前に、それは完全に動作するJS配列です。私はそれをJavaの準備のために別の方法で解析する必要がありますか? – ryandlf