2017-07-03 6 views
1

私は問題を抱えている2つの以上のJSONファイルを結合またはマージする必要があります。..共同二つ以上のJSONファイル

これまでのところ、ここに私のコードです:

//first 
    $url1="https://www.zopim.com/api/v2/chats"; 
    $ch1 = curl_init(); 
    curl_setopt($ch1, CURLOPT_URL, $url1); 
    curl_setopt($ch1, CURLOPT_USERPWD, "$username:$password"); 
    curl_setopt($ch1, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
    curl_setopt($ch1, CURLOPT_SSL_VERIFYHOST, 0); 
    curl_setopt($ch1, CURLOPT_SSL_VERIFYPEER, 0); 
    curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true); 
    $output1 = curl_exec($ch1); 
    $info1 = curl_getinfo($ch1); 
    curl_close($ch1); 

    $chats1 = json_decode($output1,true); 

    //second 
    $url2="https://www.zopim.com/api/v2/chats?page=2"; 
    $ch2 = curl_init(); 
    curl_setopt($ch2, CURLOPT_URL, $url2); 
    curl_setopt($ch2, CURLOPT_USERPWD, "$username:$password"); 
    curl_setopt($ch2, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
    curl_setopt($ch2, CURLOPT_SSL_VERIFYHOST, 0); 
    curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, 0); 
    curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true); 
    $output2 = curl_exec($ch2); 
    $info2 = curl_getinfo($ch2); 
    curl_close($ch2); 

    $chats2 = json_decode($output2,true); 



    $r = []; 
    if(is_array($chats1) && is_array($chats2)) 
    { 
     foreach($chats1 as $key => $array) 
     { 
      $r[$key] = array_merge($chats2[$key], $array); 
     } 
    } 
    else 
    { 
    echo 'problem with json'; 
    } 
    echo json_encode($r, JSON_UNESCAPED_SLASHES); 

が、私はエラーが発生します。 enter image description here enter image description here

がうまくいけば、あなたが私を助けるか、あなたがより良い協力を持って行うことができます。

ここ数44エラー行ですドまたはforeachのを使用してのように、この1 ..のログイン...私も?ページ= 1、?ページのように番号によって生成されたリンクの自動にしたい

= 2のように...

はここです私のJSON: json1 enter image description here

とjson2: enter image description here

+0

あなた 'array'を入力してください。 –

+0

私はそれを投稿します... – ivor

+0

@JaydeepMor isend screenshot .. jsonファイルが長すぎます... – ivor

答えて

0

私はそれに参加するための2つの小さなjsonを作成しています!以下のチェック、

JSON - 1

{ 
    "chats": [ 
     { 
      "comment": null, 
      "triggered_response": true, 
      "visitor": { 
       "phone": "" 
      }, 
      "session": { 
       "city": "Moncton", 
       "end_date": "2017-07-03", 
       "ip": "99.240.22.84" 
      }, 
      "duration": "32", 
      "agent_names": { 
       "name": "test" 
      } 
     } 
    ] 
} 

JSON - 2

{ 
    "chats": [ 
     { 
      "comment": null, 
      "triggered_response": true, 
      "visitor": { 
       "phone": "" 
      }, 
      "session": { 
       "city": "Moncton1", 
       "end_date": "2017-08-03", 
       "ip": "99.240.22.85" 
      }, 
      "duration": "321", 
      "agent_names": { 
       "name": "test1" 
      } 
     } 
    ] 
} 

今私はarray_merge_recursiveを使用していることに参加。

PHP

// $json is first json encoded string same as $json1 is second encoded string. 
$merge_array = array_merge_recursive(json_decode($json,true),json_decode($json1,true)); 

JSONエンコードされた出力

{ 
    "chats": [ 
    { 
     "comment": null, 
     "triggered_response": true, 
     "visitor": { 
      "phone": "" 
     }, 
     "session": { 
      "city": "Moncton", 
      "end_date": "2017-07-03", 
      "ip": "99.240.22.84" 
     }, 
     "duration": "32", 
     "agent_names": { 
      "name": "test" 
     } 
    }, 
    { 
     "comment": null, 
     "triggered_response": true, 
     "visitor": { 
      "phone": "" 
     }, 
     "session": { 
      "city": "Moncton1", 
      "end_date": "2017-08-03", 
      "ip": "99.240.22.85" 
     }, 
     "duration": "321", 
     "agent_names": { 
      "name": "test1" 
     } 
    } 
    ] 
} 
+0

foreachがjsonファイル名の番号を生成する方法について... – ivor

+0

なぜ 'foreach'が必要ですか? –

+0

URLは自動的に生成されます...それは?page = 2と同様に増加します... – ivor

0

あなたはarray_merge上の文字列として$ chats2 [$キー]を渡すここでご使用のアレイ構造の両方に同じであれば();あなたがこれを行うことができますので、エラーが

$res_arr = array_merge($chats2,$chats1); 
array_values($res_arr); 

$r = []; 
if(!empty($res_arr)) 
{ 
    foreach($res_arr as $key => $array) 
    { 
     $r[$key] = $array; 
    } 
} 
else 
{ 
    echo 'problem with json'; 
} 
echo json_encode($r); 
+0

foreachでそれを使う方法は? – ivor

+0

私の更新された答えを試してみてください。問題があれば教えてください –

0

を発生しました:

$user = array(); 
$user[] = json_decode($json1,true); 
$user[] = json_decode($json2,true); 
$json_merge = json_encode($user); 
0
$finalArray = []; 
$finalArray[] = json_decode($json1,true); 
$finalArray[] = json_decode($json2,true); 
$mergedJSON = json_encode($finalArray); 

を同じ配列構造のためにあなたがして json_encode()を使用 array_merge($array1, $array2) 方法&を使用することができます。

例:

$mergedArray = array_merge($array1, $array2); 
$mergedJSON = json_encode($mergedArray); 
関連する問題