既出でしたらすみません。PHP7です。
下記ようなJSONがあります。
ファイル名:area.json
JSON
1[ 2 { 3 "no.1": "東京", 4 "no.2": "神奈川", 5 "no.3": "千葉", 6 "no.4": "埼玉", 7 "no.5": "ブラジル", 8 "no.6": "佐賀", 9 "no.7": "北海道", 10 "no.8": "大分", 11 "no.9": "愛知", 12 "no.10": "静岡" 13 }, 14 { 15 "no.100": "フィリピン", 16 "no.101": "山梨", 17 "no.102": "青森", 18 "no.103": "秋田", 19 "no.104": "福島", 20 "no.105": "福岡", 21 "no.106": "鹿児島", 22 "no.107": "沖縄", 23 "no.108": "ロシア", 24 "no.109": "新潟" 25 } 26]
下記PHPでは、JSONファイル(area.json)を読み込んで、一部の値を書き換えて、
テキストでJSONを組み立てて再度JSONファイルとして保存しています。
PHP
1<?php 2 3//読み込み 4$url = "./area.json"; 5$json = file_get_contents($url); 6$json = mb_convert_encoding($json, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN'); 7$arr = json_decode($json,true); //All Json Data. 8//print_r($arr[0]); 9 10$i00 = 0; 11foreach($arr[0] as $key1 => $val1){ 12 13 $aaa[$i00] = $key1; 14 $bbb[$i00] = $val1; 15 $i00++; 16 17} 18 19$i01 = 0; 20foreach($arr[1] as $key2 => $val2){ 21 22 $ccc[$i01] = $key2; 23 $ddd[$i01] = $val2; 24 $i01++; 25 26} 27 28$bbb[0] = "上海"; // $arr[0]['name']の東京を上海に書き換える 29 30$JSON = <<< EOF 31[ 32 { 33 "$aaa[0]":"$bbb[0]", 34 "$aaa[1]":"$bbb[1]", 35 "$aaa[2]":"$bbb[2]", 36 "$aaa[3]":"$bbb[3]", 37 "$aaa[4]":"$bbb[4]", 38 "$aaa[5]":"$bbb[5]", 39 "$aaa[6]":"$bbb[6]", 40 "$aaa[7]":"$bbb[7]", 41 "$aaa[8]":"$bbb[8]", 42 "$aaa[9]":"$bbb[9]" 43 }, 44 { 45 "$ccc[0]":"$ddd[0]", 46 "$ccc[1]":"$ddd[1]", 47 "$ccc[2]":"$ddd[2]", 48 "$ccc[3]":"$ddd[3]", 49 "$ccc[4]":"$ddd[4]", 50 "$ccc[5]":"$ddd[5]", 51 "$ccc[6]":"$ddd[6]", 52 "$ccc[7]":"$ddd[7]", 53 "$ccc[8]":"$ddd[8]", 54 "$ccc[9]":"$ddd[9]" 55 } 56] 57EOF; 58 59//上書き 60$data = json_decode($JSON,true); 61$json = fopen('./area.json', 'w+b'); 62fwrite($json, json_encode($data)); 63fclose($json);
一応やりたい事はできていて、個人的に読みやすいかとは思うのですが、
泥臭くてあまり良いコードではないなぁと思っており、データ容量が大きく
なった場合、処理も大変になってきそうです。
「普通はこうする」、「そのやり方はおかしい」、
「こんなやり方もある」、「いや、こんなやり方が適切」
など教えていただきたいです。
是非よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー