亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將多個列表合并為一個 json 字符串

將多個列表合并為一個 json 字符串

C#
HUWWW 2022-12-04 13:06:24
我需要通過 json 將數據從我的游戲服務器發送到客戶端,并從數據庫中獲取大量數據并發送它會產生問題目前我正在調用數據庫以獲取數據時創建多個列表,現在我被卡住了,因為我有數據但在多個列表中,我不知道如何返回數據。我覺得我應該在這里將它轉換為 JSON,然后返回 json 字符串,但這一切真的很混亂public static void GetLobbyList() {        string query = "SELECT * FROM que";        MySqlCommand cmd = new MySqlCommand(query, MySQL.mySQLSettings.connection);        MySqlDataReader reader = cmd.ExecuteReader();        List<int> ids = new List<int>();        List<string> uids = new List<string>();        List<int> bets = new List<int>();        List<string> games = new List<string>();        while (reader.Read()) {            ids.Add((int)reader["id"]);            uids.Add((string)reader["uid"]);            bets.Add((int)reader["bet"]);            games.Add((string)reader["game"]);        }        reader.Close();    }所以在這里我從數據庫中讀取信息,由于缺乏經驗,我將每個數據點添加到列表中(這真的很難看,我知道必須有更好的方法)所以基本上我Grab the data->Parse to json->Send string to client如果可以假設返回的數據來自一個表編號 | uid | 打賭 | 游戲我想在 json 中返回一個數組,看起來像{ {“id”:1,“uid”:“erjfh4982y9hf”,“賭注”:3,“游戲”:“貪吃蛇”} {“id”:2,“uid”:“gsegt34t”,“賭注”:2 , "游戲" : "貪吃蛇" } }我不太熟悉 json 及其工作原理,但我知道這是將大數據包從我的服務器發送到我的客戶端的唯一方法,因為在發送之前所有內容都必須轉換為字節,而我的框架不會支持將列表轉換為字節
查看完整描述

2 回答

?
猛跑小豬

TA貢獻1858條經驗 獲得超8個贊

為了實現您的目標,您應該創建一個類來保存您從數據庫中檢索到的數據。在我的例子中,我調用了它GameObject,它的定義如下。


public class GameObject

{

    public int Id { get; set; }

    public string Uid { get; set; }

    public int Bet { get; set; }

    public string Game { get; set; }

}

從數據庫中檢索信息后,您需要運行類似于以下的代碼。


var items = new List<GameObject>();


while (reader.Read())

{

    items.Add(new GameObject

    {

        Id = (int)reader["id"],

        Uid = (string)reader["uid"],

        Bet = (int)reader["bet"],

        Game = (string)reader["game"]

    });

}


// Return the jsonPacket which will contain all the items in json format.

var jsonPacket = JsonConvert.SerializeObject(items);

為了使其正常工作,您需要從 nuget 中引用 Newtonsoft.Json 庫。打開你的包管理器控制臺并輸入以下命令:Install-Package Newtonsoft.Json它會為你設置它。在我們代碼的頂部,您需要using Newtonsoft.Json;能夠使用庫中的類來序列化為 Json。在接收端,您可以將字符串傳遞給JsonConvert.DeserializeObject<T>(),您將取回對象列表。


查看完整回答
反對 回復 2022-12-04
?
茅侃侃

TA貢獻1842條經驗 獲得超22個贊

您可以使用objects 和匿名類型的列表。還有一個 JSON 序列化程序,System.Web.Script.Serialization.JavaScriptSerializer如果您將System.Web.Extensions程序集添加到您的引用中,則包含該序列化程序。


List<object> list = new List<object>();


while (reader.Read()) {

    list.Add(new { id =  (int)reader["id"],

                   uid = (string)reader["uid"],

                   bet = (int)reader["bet"],

                   game = (string)reader["game"], });


}


string json = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(list);


查看完整回答
反對 回復 2022-12-04
  • 2 回答
  • 0 關注
  • 170 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號