簡體   English   中英

使用C#序列化JSON

[英]Serializing JSON using c#

我正在開發一些App。 我想以JSON將數據從服務器發送到Android應用程序。 我有一個RestFul WCF service ,我的客戶端通過該RestFul WCF service與服務器進行通信。 如果我想要一個單一值,那很好。但是當我想要一堆數據時,我很驚訝。 我搜索了一些線程,並研究了JSON.net字典和對象,但沒有找到任何簡單的示例。 如果有人給我先機或解決我的問題,將不勝感激。

這是我嘗試的一個例子。

數據庫 在此處輸入圖片說明

現在我想要什么? 我想要所有在JSON字符串或對象格式中具有q_QuizCode = dfsew43的結果。

我如何嘗試:

public GetQuiz getAllQuiz(string q_code)
    {
        GetQuiz getQuizObject = new GetQuiz();
        List<GetQuiz> gQuiz = new List<GetQuiz>();

        #region DataBase_Connectivity

        string strConnectionString = ConfigurationManager.ConnectionStrings["SQL"].ConnectionString;
        SqlConnection conn = new SqlConnection(strConnectionString);
        conn.Open();

        #endregion

        string query = "select q_Question,q_opa,q_opb,q_opc,q_opd,q_cop from Table_QuizDetail where q_QuizCode = @qcode";
        SqlCommand oCmd = new SqlCommand(query, conn);
        oCmd.Parameters.AddWithValue("@qcode", q_code);
        using (SqlDataReader oReader = oCmd.ExecuteReader())
        {
            while (oReader.Read())
            {

                getQuizObject.Quiz_Question = oReader["q_Question"].ToString();
                getQuizObject.Quiz_Option_A = oReader["q_opa"].ToString();
                getQuizObject.Quiz_Option_B = oReader["q_opb"].ToString();
                getQuizObject.Quiz_Option_C = oReader["q_opc"].ToString();
                getQuizObject.Quiz_Option_D = oReader["q_opd"].ToString();
                getQuizObject.Quiz_Correct_Op = oReader["q_cop"].ToString();

                gQuiz.Add(getQuizObject);
            }
        }
  }

我得到的是:

{
"getAllQuizResult":{
 "Quiz_Correct_Op":"b",
"Quiz_Option_A":"jreowi",
"Quiz_Option_B":"slkj",
"Quiz_Option_C":"elk",
"Quiz_Option_D":"dslkj",
"Quiz_Question":"ewepewoirpowejrdsngfdglfdjkbk"}
}

這就是我實際上在數據庫中遍歷的行。

您需要在while循環中實例化新的GetQuiz對象,就像Patrick所說的那樣。

但是該方法還應該返回List<GetQuiz>而不是GetQuiz

將方法簽名更改為

public List<GetQuiz> getAllQuiz(string q_code)

並添加

return gQuiz

作為方法中的最后一條語句,否則它將無法編譯。

那是因為您在迭代時不會再次實例化getQuizObject對象。 因此,它會不斷更改原始getQuizObject對象的值。

嘗試這個:

while (oReader.Read())
{
    GetQuiz getQuizObject = new GetQuiz();

    ...

    gQuiz.Add(getQuizObject);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM