在将结果返回给客户端应用程序之前,反序列化JSON字符串并在SQL查询中使用

时间:2014-08-21 17:05:04

标签: c# json wcf api rest

我正在创建一个WCF REST服务,我将使用来自客户端应用程序(当前有一个简单的Windows窗体应用程序)的传入ID来查询SQL数据库,在那里我在多行文本框中获取ID,序列化它们然后将它们发送到WCF REST服务。由于没有尺寸限制,我使用POST。

从图像中,我正在反序列化JSON字符串,这就是我尝试过的。基本上,我想从这里实现以下目标:

反序列化JSON字符串>也许是数据表>使用Table Valued参数将DataTable传递给SQL查询,该参数在我的数据库上执行存储过程(从表值参数中的数据表中获取值)>这将返回ID的MatterID和MatterBalanceOutstanding(在本例中为ID:G00000013,ID:G00000014,G0000015),然后我将从API返回到客户端应用程序。

我觉得自己如此亲近,但是我无法理解这一点。请有人帮忙,因为我只需要创建一个ID为G00000013的DataTable,ID:G00000014,G0000015作为行。

完成后,我对存储过程部分很好。请有人帮忙吗?

以下是我的代码的屏幕截图。我也将包括我的代码。

Debug of current deserialize

public static MatterDetail DeserializeJSon<MatterDetail>(string jsonString)
    {
        DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(MatterDetail));
        MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
        MatterDetail obj = (MatterDetail)ser.ReadObject(stream);


        return obj;
    }

[DataContract]
[Serializable]
public class Employee
{
    [DataMember]
    public string firstname { get; set; }
    [DataMember]
    public string lastname { get; set; }
    [DataMember]
    public decimal salary { get; set; }
    public Employee(string first, string last, decimal sal)
    {
        firstname=first;
        lastname=last;
        salary=sal;
    }
}

[DataContract]
[Serializable]
public class MatterDetail
{
    [DataMember]
    public string MatterID { get; set; }
    [DataMember]
    public decimal MatterBalanceOutstanding { get; set; }

    public MatterDetail(string ID, decimal M_CurBalanceOutstanding)
    {
        MatterID = ID;
        MatterBalanceOutstanding = M_CurBalanceOutstanding;
    }
}

1 个答案:

答案 0 :(得分:0)

发现问题。类被指定错误。 MatterDetail应该包含ID而不是MatterID。

[DataContract]
[Serializable]
public class MatterDetailTest
{
    [DataMember]
    public string ID { get; set; }
}

希望这有助于其他人。