我的問題如下:
//[{"CODE":"B","DESC":"B level"},{"CODE":"C","DESC":"C level"}]
string str = "[{\"CODE\":\"B\",\"DESC\":\"B level\"},{\"CODE\":\"C\",\"DESC\":\"C level\"}]";
object otn = Json2Object(str);  //這物件要如何取值?
我有在網路上找到一個方法:
    //JSON字串
    string Json = "{ 'Table1': [ { 'id': 1, 'item': '這是第1個項目' }, { 'id': 2, 'item': '這是第2個項目' }, { 'id': 3, 'item': '這是第3個項目' }, { 'id': 4, 'item': '這是第4個項目' } ] }";
    //將JSON字串轉為DataSet
    DataSet dataSet = JsonConvert.DeserializeObject<DataSet>(Json);
    //建立DataTable,並塞進dataSet的值
    DataTable dataTable = dataSet.Tables["Table1"];
    //顯示DataTable的筆數
    Response.Write("共"+dataTable.Rows.Count+"筆資料</br>");
    
    //顯示DataTable的筆數
    foreach (DataRow row in dataTable.Rows)
    {
         Response.Write(row["id"] + " - " + row["item"]);
    }
細看差別在我的資料沒有 Table1 這一層
請問是否這樣就沒辦法解了?
1、跟據那個json的內容,建立相應的Class,你可以加開一個類別檔來放,或是放在你的CS檔的最下方
class JObj {
    public string CODE{get;set;}
    public string DESC{get;set;}  
}
2、個人喜好用Newtonsoft的JsonConvert(Nuget免費下載使用),因為C#的字串為雙引號,我把你的例子上的json裡的雙引號改為單引號,不然一堆反斜線會看到花路路
    string jsonstr = @"[{'CODE':'B','DESC':'B level'},{'CODE':'C','DESC':'C level'}]";
    var  csObj = JsonConvert.DeserializeObject<JObj>(jsonstr);
3、取值的方法,因為你的例子是陣列,所以要列舉
    foreach(var data in csObj){
        MessageBox.Show(data.CODE);
    }
打完收工
抱歉,請問我這樣寫了
    class JObj
    {
        public string CODE { get; set; }
        public string DESC { get; set; }
        public static void MainC5()
        {
            //JSON
            string jsonstr = @"[{'CODE':'B','DESC':'B level'},{'CODE':'C','DESC':'C level'}]";
            var csObj = JsonConvert.DeserializeObject<JObj>(jsonstr);
            foreach (var data in csObj)
            {
                Console.WriteLine(data.CODE);
            }
        }
    }
有錯誤訊息:
是哪裡不對嗎?
解決了:
var csObj = JsonConvert.DeserializeObject<JObj[]>(jsonstr);
sorry忘了把陣列型別符號[]給加上去了,程式碼在這裡直接寫沒在實機上測試....疏忽...下次改進~