php
  • json
  • 2016-05-05 5 views 1 likes 
    1

    Webサービスが作成され、jsonデータが次のように返されます。 [{"lat": "6.8658"、 "lng": "79.8744"}二重引用符を使わないでjsonデータ値をエコーする方法

    実際には次のようにする必要があります。 [{ "LAT":6.8658、 "LNG":79.8744}]

    $location_data= $this->db->query("SELECT lat,lng FROM jobs WHERE job_code='JO34656'")->result_array(); 
    
    echo json_encode($location_data); 
    
    +0

    、それらの間の違いは何ですか?ちょうど 'string'と' number'ですか? 'json decode'を読んでいる間、またはencodeする前に値を10進数として変更することができます。 –

    答えて

    2

    ちょうどfloatvalにすべての要素をキャスト:

    $location_data = $this->db->query("SELECT lat,lng FROM jobs WHERE job_code='JO34656'")->result_array(); 
    $data = json_encode(array_map(function($e){ 
        return array_map('floatval', $e); 
    }, $location_data)); 
    

    それとも、あなたがキャストしたい方の列選択:

    $location_data = json_encode(array_map(function($e){ 
        foreach($e as $key => &$loc) { 
         if(in_array($key, array('lat', 'lng'))) { 
          $loc = floatval($loc); 
         } 
        } 
        return $e; 
    }, $location_data)); 
    
    +0

    ステートメントを選択するために何かを追加すると、それは間違っています。 –

    +0

    @MateuszSip何を意味するのですか?_他に選択するものを追加していますか? 'SELECT lat、lng、date'に別の列を追加することを意味しますか?この回答は現在の質問をカバーし、十分であるはずです(OPが突然それを変更しない限り) – Ghost

    +0

    正確です。我々はOPを良い解決策にするべきであり、「この特定の場合に働くもの」ではない。 さまざまなタイプのデータを含めるようにそのクエリを拡張するのは当然ですから、それは役に立ちません。 –

    -2

    あなたは、作成時に値を変換するビューモデルを作成することができるが、以下のように私のPHPコードです。

    +0

    この回答は、「コードを記述することができます」と同様に有用です。 –

    +0

    私はビューモデルのコンセプトはgoogle可能で分かりやすいと思っていましたが、あなたは正しいです。 OPの場合: データを表す簡単なPHPクラスを作成し、コンストラクタで型キャスティングを行うことができます。 タイプヒントと簡単な拡張/リファクタリングが得られるので、これは良いことです。 私の意見では、@Rodrigo Duterteの答えは解決策であり、実際の解決策ではありません。 –

    0

    は、おそらくstr.replace("Original", "Replacement");構文を使用しますか?

    var test = "\"TEST\""; 
    test.replace(/\"/g, "")); 
    

    "TEST" - >TEST

    4

    numbersとしてnumeric stringsエンコードの使用JSON_NUMERIC_CHECK、。

    このオプションは5.3.3から追加されました。およそ

    $location_data= $this->db->query("SELECT lat,lng FROM jobs WHERE job_code='JO34656'")->result_array(); 
    
    echo json_encode($location_data, JSON_NUMERIC_CHECK); // [{"lat":6.8658,"lng":79.8744}] 
    

    より:JSON_NUMERIC_CHECK

    +0

    少なくともそのようなオプションが存在する – Ghost

    関連する問題