JSON добавляет проблемы, хочет получить их внутри одной квадратной скобки [duplicate]

Это означает, что указанная переменная не указана ни на что. Я мог бы сгенерировать это так:

SqlConnection connection = null;
connection.Open();

Это вызовет ошибку, потому что, пока я объявил переменную «connection», она не указала ни на что. Когда я пытаюсь вызвать член «Open», для его устранения нет ссылки, и он будет вызывать ошибку.

Чтобы избежать этой ошибки:

  1. Всегда инициализируйте свои объекты, прежде чем пытаться что-либо с ними делать.
  2. Если вы не уверены, что объект имеет значение null, проверьте его с помощью object == null.

Инструмент Resharper JetBrains определит каждое место в вашем коде, которое имеет возможность ошибки нулевой ссылки, позволяя вам ввести нулевую проверку. Эта ошибка является источником ошибок номер один, IMHO.

10
задан benhowdle89 25 October 2011 в 21:18
поделиться

6 ответов

$data[] = $_POST['data'];

$inp = file_get_contents('results.json');
$tempArray = json_decode($inp);
array_push($tempArray, $data);
$jsonData = json_encode($tempArray);
file_put_contents('results.json', $jsonData);
32
ответ дан Alexis King 1 September 2018 в 09:32
поделиться

Пример кода, который я использовал для добавления дополнительного массива JSON в json-файл.

                $AdditionalArray = array(
                'id' => $id,
                'title' => $title,
                'content' => $content
                );

                //open or read json data
                $data_results = file_get_contents('results.json');

                $tempArray = json_decode($data_results);
                //append additional json to json file
                $tempArray[]=$AdditionalArray;
                $jsonData = json_encode($tempArray);

            file_put_contents('results.json', $jsonData);   
3
ответ дан Cristiana Chavez 1 September 2018 в 09:32
поделиться

Вы разрушаете свои json-данные, слепо добавляя текст к нему. JSON не является форматом, который можно манипулировать таким образом.

Вам нужно будет загрузить текст json, декодировать его, обработать результирующую структуру данных, затем перекодировать / сохранить его.

<?php

$json = file_get_contents('results.json');
$data = json_decode($json);
$data[] = $_POST['data'];
file_put_contents('results.json', json_encode($data));

Допустим, у вас [1,2,3] сохранено в вашем файле. Ваш код может превратить это в [1,2,3]4, что является синтаксически неправильным.

12
ответ дан davidshen84 1 September 2018 в 09:32
поделиться
/*
 * @var temp 
 * Stores the value of info.json file
 */
$temp=file_get_contents('info.json');

/*
 * @var temp
 * Stores the decodeed value of json as an array
 */
$temp= json_decode($temp,TRUE);

//Push the information in temp array
$temp[]=$information;

// Show what new data going to be written
echo '<pre>';
print_r($temp);

//Write the content in info.json file
file_put_contents('info.json', json_encode($temp));
}
0
ответ дан Jason Roman 1 September 2018 в 09:32
поделиться

Если вы хотите добавить еще один элемент массива в файл JSON, как показывает ваш пример, откройте файл и найдите его до конца. Если у файла уже есть данные, найдите назад один байт, чтобы перезаписать «]» после последней записи, затем напишите «,» плюс новые данные минус начальные «[» новых данных. В противном случае это ваш первый элемент массива, поэтому просто напишите свой массив как обычно.

Извините, я не знаю достаточно о PHP, чтобы опубликовать фактический код, но я сделал это в Obj-C, и это позволило мне чтобы вначале не читать весь файл, а просто добавить его в конец:

NSArray *array = @[myDictionary];
NSData *data = [NSJSONSerialization dataWithJSONObject:array options:0 error:nil];
FILE *fp = fopen(fname, "r+");
if (NULL == fp)
    fp = fopen(fname, "w+");
if (fp) {
    fseek(fp, 0L, SEEK_END);
    if (ftell(fp) > 0) {
        fseek(fp, -1L, SEEK_END);
        fwrite(",", 1, 1, fp);
        fwrite([data bytes] + 1, [data length] - 1, 1, fp);
    }
    else
        fwrite([data bytes], [data length], 1, fp);
    fclose(fp);
}
4
ответ дан spstanley 1 September 2018 в 09:32
поделиться

Это взято выше, например, и переместило его на php. Это переместится в конец файла и добавит новые данные без чтения всего файла в память.

// read the file if present
$handle = @fopen($filename, 'r+');

// create the file if needed
if ($handle === null)
{
    $handle = fopen($filename, 'w+');
}

if ($handle)
{
    // seek to the end
    fseek($handle, 0, SEEK_END);

    // are we at the end of is the file empty
    if (ftell($handle) > 0)
    {
        // move back a byte
        fseek($handle, -1, SEEK_END);

        // add the trailing comma
        fwrite($handle, ',', 1);

        // add the new json string
        fwrite($handle, json_encode($event) . ']');
    }
    else
    {
        // write the first event inside an array
        fwrite($handle, json_encode(array($event)));
    }

        // close the handle on the file
        fclose($handle);
}
20
ответ дан Tom Martin 1 September 2018 в 09:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: