json有不等于说它就是合法的,除非Select_Treemenu_Info能保证这一点这个你要看Select_Treemenu_Info怎么实现的。实在不放心加try catch

解决方案 »

  1.   

    对吼!!我都忘记附上我WS 那段
    [WebMethod(Description = "查詢:登入後對應的功能頁")]
    public String Select_Treemenu_Info(String iCode, String menuFlag)
    {
        DbCommand sql = MyWSDbCommands.Select_Identity_Treemenu;
        sql.Parameters.Add("ICode", DbType.String).Value = iCode;
        sql.Parameters.Add("MenuFlag", DbType.String).Value = String.IsNullOrEmpty(menuFlag) ? IgnoreTypes.And : menuFlag;
        DataTable dt = sql.FillTable();
        String strJson = JsonConvert.SerializeObject(dt, Formatting.Indented);
        return strJson;
    }
    我测试过其实 dt 只有两种可能吧
    1. 有资料:回传DataTAble转Json的字串。
    2. 没资料:就是回传 空白strJson,感觉上是不会有什么其他例外。
    只是我一直怕是不是会漏掉什么可能
      

  2.   

    //字符串为null或者为空或者空白,直接返回
    String jsonString = _handler.Select_Treemenu_Info(iCode, menuFlag); 
    if (String.IsNullOrEmpty(jsonString)) 
    return null; //你的datatable有指定字段?
    DataTable dt = JsonConvert.DeserializeObject<DataTable>(jsonString);    
    if(dt.Rows == null || dt.Rows.Count == 0)
    return null; //这里new TreemenuInfo可能有异常
    List<TreemenuInfo> tmpList = dt.AsEnumerable().Select(dr => new TreemenuInfo(dr)).ToList();    
    return tmpList;