0

次のようなjsonを作成します。

["\"緯度\":\"123.0\",\"経度\":\"0\",\"経度\":\"123.0\",\"urlfoto\":\"a\", \"idruta\":\"45\"}","{\"latitud\":\"321.0\",\"orden\":\"1\",\"経度\":\"321.0\ ",\"urlfoto\":\"b\",\"idruta\":\"45\"}","{\"緯度\":\"231.0\",\"orden\":\" 2\",\"経度\":\"231.0\",\"urlfoto\":\"c\",\"idruta\":\"45\"}"]

ここで検索してみました:

$puntos = $_POST['puntos'];
$data = json_decode($puntos,true);

foreach($data as $obj) {
        $idruta = $obj['idruta'];
        $orden = $obj['orden'];
        $urlfoto = $obj['urlfoto'];
        $longitud = $obj['longitud'];
        $latitud = $obj['latitud'];
    }

無効な文字列オフセット 'idruta'


foreach($data as $obj) {
         $idruta = $obj->idruta;
         $orden = $obj->orden;
         $urlfoto = $obj->urlfoto;
         $longitud = $obj->longitud;
         $latitud = $obj->latitud;
     }

非オブジェクトのプロパティを取得しようとしています


foreach($data as $obj) {
        $idruta = $obj[0];
        $orden = $obj[1];
        $urlfoto = $obj[2];
        $longitud = $obj[3];
        $latitud = $obj[4];
    }

obj[i] は常に 0 で、エラーはありません。

ループは 3 回行うので、問題ありません。

申し訳ありませんが、私は JSON と php を学んでいます。誰かが JSON のデータを取得するのを手伝ってくれたらとてもうれしいです。

ありがとう!

編集:答えてくれてありがとう!「{」が欠落している理由がわかりません。たとえば、同じjsonをJSONlintに貼り付けると、検証がうまくいくので...少し迷ってしまいました。

それが私がjsonを送信している方法です:

public void insertPoints(ArrayList<Punto> puntos){
        JSONArray array = new JSONArray();
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        for(Punto p:puntos){
            JSONObject obj = new JSONObject();
            try {
            obj.put("idruta",Integer.toString(p.getIdruta()));
            obj.put("orden",Integer.toString(p.getOrden()));
            obj.put("urlfoto",p.getUrlfoto());
            obj.put("longitud",Double.toString(p.getLongitud()));
            obj.put("latitud",Double.toString(p.getLongitud()));
            array.put(obj.toString());
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        HttpClient httpClient = new DefaultHttpClient();

        try {
            HttpPost request = new HttpPost(CREATE_POINT);
            StringEntity params =new StringEntity("puntos=" + postjson);
            request.addHeader("content-type", "application/x-www-form-urlencoded");
            request.setEntity(params);
            HttpResponse response = httpClient.execute(request);
            // handle response here...

        } catch (Exception ex) {
            // handle exception here
        } finally {
            httpClient.getConnectionManager().shutdown();
        }
        }

ここに問題はありますか?

ありがとう!

4

2 に答える 2

0

JSON は文字列の配列を表します。すべて{}は内部"..."にあり、文字列の一部として解釈されます。'idruta'そのため、すべてのフィールドが 1 つの文字列内にあるため、さらに解析することなく他のフィールドにアクセスすることはできません。可能であれば、JSON コードを変更する必要があります。

あなたの問題はによって引き起こされarray.put(obj.toString());ます。あなたはそれをすべきではありません。Integer.toStringまた、 fromobj.put("idruta",Integer.toString(p.getIdruta()));および同様の行を削除する必要があると思います。この質問を参照してください。

于 2013-05-16T11:12:52.640 に答える