Я просто работал над этим ... так что, возможно, потребуется немного tweeking. Обратите внимание на специальные символы, которые нуждаются в адресации.
public string GridtoCVS(GridView gvParm)
{
StringBuilder sbRetVal = new StringBuilder();
for (int i = 0; i <= gvParm.Rows.Count - 1; i++)
{
StringBuilder sbLine = new StringBuilder();
for (int j = 0; j <= gvParm.Columns.Count - 1; j++)
{
sbLine.Append(gvParm.Rows[i].Cells[j].Text.Trim() + ",");
}
string sLine = sbLine.ToString().Replace(" ", "").Replace("'","'").Replace("&","&");
sbRetVal.AppendLine(sLine);
}
return sbRetVal.ToString();
}
JSON-объекта не существует. JSON представляет собой строковое представление в J avas S cript O bject N Otation, вы можете построить объект PHP -array-структура из, используя json_decode
. Чтобы получить строку JSON из переменных PHP, используется функция json_encode
.
Самый простой способ - это перебрать trailervideos
для создания нового ассоциативного массива, поскольку могут быть только уникальные ключи. Мы можем исключить имена ключей с помощью функции array_values
позже, чтобы предотвратить json_encode
создание объекта вместо массива, поскольку в JavaScript не существует ассоциативных массивов.
Эта версия обрабатывает все категории, "Video Games"
, а также "Entertainment"
и, если доступно, даже больше.
$a = [];
foreach (($o = json_decode($json))->trailervideos as $v)
{
isset($a[$v->category]) || $a[$v->category] = new stdClass();
$a[$v->category]->category = $v->category;
$a[$v->category]->videos[] = $v->videos;
}
$o->trailervideos = array_values($a);
var_dump(json_encode($o));
(отформатированный) результат JSON выглядит так:
{
"trailervideos": [
{
"category": "Video Games",
"videos": [
{
"description": "Trailer of the game Dark Souls II",
"title": "Dark Souls 2 Announcement Trailer"
},
{
"description": "Trailer of the DLC Scholar of the First Sin for the game Dark Souls II",
"title": "Dark Souls II Scholar of the First Sin - Forlorn Hope Trailer"
},
{
"description": "Trailer of the DLC Ashes of Ariendel for the game Dark Souls III",
"title": "Dark Souls III Ashes of Ariandel - Announcement Trailer PS4"
}
]
},
{
"category": "Entertainment",
"videos": [
{
"description": "",
"title": "intro"
}
]
}
]
}