0

这个问题不完全是一个编程问题。我需要对显示的图片进行 JSON 输出。我知道的用法,json_encode()但问题是我不明白我将如何合乎逻辑地显示这些细节。

我得到的输出是:

{"name":"ZXY","success":1,"subjects":["DIGITAL COMMUNICATION TECHNIQUE(2012-13)","DIGITAL SIGNAL PROCESSING(2012-13)","ANTENNAS AND WAVE PROPAGATION(2012-13)","DIGITAL SWITCHING THEORY AND NETWORKS(2012-13)","ACCOUNTING FOR MANAGERS(2012-13)","DIGITAL COMMUNICATION TECHNIQUE LAB(2012-13)","DIGITAL SIGNAL PROCESSING LAB(2012-13)"]}

显示细节的图片.

请告诉我我所拥有的详细信息的有效 JSON 输出是什么,

编辑:我必须从 MySQL 数据中获取 JSON 输出。我在图像中提供的一个学生的样本数据。我展示的 JSON 是 PHP 页面的结果,我对得到的 JSON 输出不满意。我正在寻求一种更好的方法来以 JSON 格式有效地表示数据。

这是我为获取 JSON 输出而编写的 PHP 代码。

<?php

$regno = $_GET['regno'];

$host = 'localhost';
$user = 'root';
$password = '';
$database = 'android_app_details';
$dbc = mysqli_connect($host,$user,$password,$database)
    or die('Error in connecting the database');


$query = 

    "SELECT SD.REGNO, STD.FNAME, STD.MNAME, STD.LNAME, SD.SUBJECT_NAME, AD.PRESENT_COUNT, AD.TOTAL_COUNT ".
    "FROM ATTENDANCE_DETAILS AS AD, SUBJECT_DETAILS AS SD, STUDENT_DETAILS STD ".
    "WHERE AD.ENROLLMENT_ID = SD.ENROLLMENT_ID ".
    "AND SD.REGNO = '".$regno."' ".
    "AND AD.BATCH_SUBJECT_ID = SD.BATCH_SUBJECT_ID ".
    "AND SD.STUDENT_ID = STD.STUDENT_ID ";

$result = mysqli_query($dbc, $query)
    or die('Error in query');

$subject = Array();
$att = Array();
$total = Array();
$i = 0;
$success = 0;


while($row = mysqli_fetch_array($result)){
    if($row['MNAME'])
        $name = $row['FNAME'].' '.$row['MNAME'].' '.$row['LNAME'];
    else
        $name = $row['FNAME'].' '.$row['LNAME'];
    $subject[$i] = $row['SUBJECT_NAME'];
    $i++;
    $success = 1;
}

if($success)
    $response = array(
        "name" => $name,
        "success" => $success,
        "subjects" => $subject
    );
else
    $response = array(
        "success" => $success
    );
echo json_encode($response);
?>
4

1 回答 1

1

您的输出是格式良好的 JSON(正如json_encode函数所预期的那样)。

从您的评论中,我看到让您感到不安的是subjects:[...]您认为无效的数组,但确实如此。

JSON以及xml和其他结构化数据格式的全部内容是结构化数据,它在其定义中包含结构数据,因此如果您有:

{object:
    {subobject:{subobjectName:"Penny"}
}

您将拥有一个结构,其中包含所有object->subobject->subobjectName三个和一些数据,即"Penny".

现在我们可以将JSON 数组视为具有相同标记名的实体的集合,例如:

{object:{
    subobjects:[
        {subobjectName:"Penny",subobjectLasName:"Rose"},
        {subobjectName:"Lewis",subobjectLasName:"Armstrong"},
        ...
    ]
}}

哪个会有{}s您正在寻找的,但是如果您以结构/数据的方式查看它,那么最后一个数组是一个结构(对象)数组,因此它的元素是 JSON 对象。

您在发布的 JSON 输出中拥有的是一个数据数组(字符串),它们不是结构元素,并且除了subjecs.

如果您熟悉 XML,这应该更容易理解:

<student>

    <name>Penny</name>
    <last_name>Rose</last_name>
    <subjects>Subject1</subjects>
    <subjects>Subject2</subjects>
    <subjects>Subject3</subjects>

</student>

上面的这个是一个有效的 XML,并转换为您在输出中拥有的那种 JSON,这是因为这些Subject1, Subject2, Subject3文本实体没有任何父标记名,而是subjects一个包含纯文本的同名标记数组。

我知道这不能回答你的问题,但我希望它能消除你对你得到的输出的疑虑。

于 2013-05-19T15:21:23.330 回答