PHP के साथ .json फ़ाइल कैसे जनरेट करें?


127
CREATE TABLE Posts
{
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(200),
url VARCHAR(200)
}

json.php कोड

<?php
$sql=mysql_query("select * from Posts limit 20");
echo '{"posts": [';
while($row=mysql_fetch_array($sql))
{
$title=$row['title'];
$url=$row['url'];
echo '

{

"title":"'.$title.'",

"url":"'.$url.'"

},'; 
}
echo ']}';

?>

मुझे results.jsonफाइल जेनरेट करनी है ।


1
हमारे प्रश्न में कुछ स्पष्टीकरण / संदर्भ बहुत कम विनम्र है। यह प्रश्न किसी को विशेष रूप से और विशेष रूप से स्टैक अतिप्रवाह समुदाय को किसी के लिए एक अंतर्निहित आदेश की तरह लगता है ..
Sl4rtib4rtf4st

जवाबों:


247

यहाँ एक नमूना कोड है:

<?php 
$sql="select * from Posts limit 20"; 

$response = array();
$posts = array();
$result=mysql_query($sql);
while($row=mysql_fetch_array($result)) { 
  $title=$row['title']; 
  $url=$row['url']; 

  $posts[] = array('title'=> $title, 'url'=> $url);
} 

$response['posts'] = $posts;

$fp = fopen('results.json', 'w');
fwrite($fp, json_encode($response));
fclose($fp);


?> 

1
मैंने अपने प्रोजेक्ट पर इस कोड का उपयोग किया है। results.json फ़ाइल स्थानीय होस्ट पर अच्छी तरह से काम करती है और दूरस्थ सर्वर पर विफल हो जाती है। क्या आप बता सकते हैं कि ऐसा क्यों है ..
विग्नेश गोपालकृष्णन

4
आपके सर्वर सेटिंग्स में Fwrite को बंद किया जा सकता है
क्रिस

हालाँकि यह बहुत अच्छा है क्योंकि शायद मैं अभी PHP 5 का उपयोग कर रहा हूँ और यह उस समय उपलब्ध नहीं था जब यह उत्तर पोस्ट किया गया था, लेकिन आप $ परिणाम = लाइन से छुटकारा पा सकते हैं और अपने अंदर जबकि पाश सिर्फ mysql_feth_array ($ sql) बनाते हैं

कृपया $ 1 वर्ग को अपडेट करें sql = "पोस्ट सीमा 20 से * का चयन करें"; , mysql_query ()
सचिन वैरागी

6
fwrite($fp, json_encode($response,JSON_PRETTY_PRINT));- JSON को प्रारूपित करने के लिए व्हॉट्सएप का उपयोग करता है। अन्य स्थिरांक यहाँ
आंद्रेई Krasutski

49

इसे इस्तेमाल करो:

$json_data = json_encode($posts);
file_put_contents('myfile.json', $json_data);

स्क्रिप्ट चलाने से पहले आपको myfile.json को बनाना होगा।


वास्तव में टिप्पणी की तारीख में डेटा को बचाने से पहले फ़ाइल बनाने की कोई आवश्यकता नहीं है। हालांकि आपको अभी भी गैर-मौजूदा सबफ़ोल्डर्स बनाना है, यदि कोई है, तो बचत पथ के साथ। यहाँ सुविधा के लिए file_put_contents के लिए आधिकारिक दस्तावेज़ है
वेलेंटाइन शी

1
हां, प्रोग्रामिंग लैंग्वेज विकसित होती हैं। मेरी पोस्ट का उत्तर 2017 में पोस्ट किया गया था। आपको 2017 में काम करने वाले कोड
डाउनवॉट किए गए

1
आपके द्वारा दिए गए स्निप में कोई बदलाव नहीं हुआ है। जिस तरह से file_put_contentsकाम करता है, जिसका मैंने अपनी प्रारंभिक टिप्पणी में उल्लेख किया है।
वेलेंटाइन शी

30

गूंजने के बजाय अपने भ्रूण के मूल्यों को एक सरणी में डालें।

उस फ़ाइल में उपयोग करें file_put_contents()और डालें json_encode($rows), यदि $rowsआपका डेटा है।


2
मैं देख रहा हूं कि आपका उत्तर सबसे उत्थान से पहले पोस्ट किया गया था। यदि केवल आपने कुछ उदाहरण कोड लगाए होते, तो आपको कई और वोट मिलते।
इंगिन यापीसी

7

यहाँ मैं बनाने के लिए सरल सिंटेक्स का उल्लेख किया है फ़ाइल json और अंदर सरणी मान प्रिंट json सुंदर ढंग से फ़ाइल।

$array = array('name' => $name,'id' => $id,'url' => $url);
$fp = fopen('results.json', 'w');
fwrite($fp, json_encode($array, JSON_PRETTY_PRINT));   // here it will print the array pretty
fclose($fp);

आशा है कि यह आपके लिए काम करेगा ...।



6

आप बस php के json_encode फ़ंक्शन का उपयोग कर सकते हैं और फ़ाइल को सहेजने का कार्य कर सकते हैं जैसे कि fopen और fwrite


6

यदि आप डायनामिक रिकॉर्ड खींच रहे हैं, तो बेहतर है कि 1 php फ़ाइल जो कि एक json प्रतिनिधित्व बनाता है और हर बार फ़ाइल न बनाएं।

my_json.php

$array = array(
    'title' => $title,
    'url' => $url
);

echo stripslashes(json_encode($array)); 

फिर अपनी स्क्रिप्ट में फ़ाइल का पथ सेट करें my_json.php


1
जब मैं getJason का उपयोग करके इसे चलाने की कोशिश करता हूं, तो मुझे संसाधन की स्क्रिप्ट के रूप में व्याख्या की जाती है लेकिन कंसोल में MIME टाइप टेक्स्ट / html के साथ स्थानांतरित किया जाता है।
कोडिंगबक

@noobcode इसे ठीक करने के लिए, मुझे लगता है कि आपको अपने 'my_json.php' में 'सामग्री-प्रकार' शीर्षक सेट करना चाहिए।
katalin_2003

5

सबसे पहले, आपको इसे डीकोड करने की आवश्यकता है:

$jsonString = file_get_contents('jsonFile.json');
$data = json_decode($jsonString, true);

फिर डेटा बदलें:

$data[0]['activity_name'] = "TENNIS";
// or if you want to change all entries with activity_code "1"
foreach ($data as $key => $entry) {
    if ($entry['activity_code'] == '1') {
        $data[$key]['activity_name'] = "TENNIS";
    }
}

फिर इसे फिर से एनकोड करें और फाइल में वापस सेव करें:

$newJsonString = json_encode($data);
file_put_contents('jsonFile.json', $newJsonString);

प्रतिलिपि

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.