解析值时遇到意外的字符:c。路径'',第0行,第0位

时间:2017-05-23 12:39:10

标签: c# web-services json.net

我在应用程序中实现了一个方法,当它从visual studio运行时很好,但是当它从任务调度程序运行时在日志文件中出现此错误

System.Exception:同步过程中发生异常,同时获取供应商列表和方法名称为GetSuppliers。异常是Newtonsoft.Json.JsonReaderException:解析值时遇到意外的字符:C。第0行,位于Newtonsoft.Json.JsonTextReader.ParseValue()的Newtonsoft.Json.JsonTextReader.ParseValue(),位于Newtonsoft.Json.Json.JsonTextReader的Ne​​wtonsoft.Json.JsonTextReader.ReadInternal() 。在Newtonsoft.Json.Serialization

的Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ReadForType(JsonReader reader,JsonContract contract,Boolean hasConverter,Boolean inArray)中的.Read()

我的方法

 public string GetSuppliers()
{
    SqlConnection connect = null; var spdb = new Syncdbsource();
    try
    {
        var hsp = new hspservice.MyServiceSoapClient("MyServiceSoap");

        var sdetails = hsp.GetSupplier();
        List<SupplierDetails> supplierslist = null; var countSuppliers = 0;

        if (!string.IsNullOrEmpty(sdetails))
        { supplierslist = JsonConvert.DeserializeObject<List<SupplierDetails>>(sdetails); }

return countSuppliers + "Inserted";
    }
    catch (SocketException)
    {
        System.Threading.Thread.Sleep(25000);

        try
        {
            var output = GetSuppliers();
            return output;
        }
        catch (Exception ex)
        {
            var exception = new Exception(@"Exception occurred in the Sync Process while fetching the suppliers list and method name is GetSuppliers.
                                                   The Exception is " + Environment.NewLine + ex.Message);
            var message = exception.Message;
            SendMail.InsertIssue(message.Replace("'", "''"));
            return "-1";
        }

    }
    catch (Exception excp)
    {


        var exception = new Exception(@"Exception occurred in the Sync Process while fetching the suppliers list and method name is GetSuppliers.
                                                   The Exception is " + Environment.NewLine + excp);



        SendMail.InsertIssue(exception.ToString().Replace("'", "''"));

    }
    finally
    {
        if (connect != null && connect.State == ConnectionState.Open)
        { connect.Dispose(); }

    }

    return string.Empty;
}

Json返回字符串

[{&#34; SUPPLIERID&#34;:&#34; 10148&#34;,&#34; SUPPLIERNAME&#34;:&#34; ALLIED ELECTRONICS - LUD&#34;,&#34; TNAMC&#34;:&#34;收到的账户&#34;,&#34; TNAMB&#34;:&#34; &#34;,&#34; TNAME&#34;:&#34; FORT WORTH&#34;,&#34; TPSTC&#34;:&#34; 76113-2325&#34;,&#34; TCSTE& #34;:&#34; TX&#34;,&#34; TCCTY&#34;:&#34; USA&#34;,&#34; PHONE&#34;:&#34; 616-365-9960& #34;,&#34;传真&#34;:&#34; 6163659895&#34;},{&#34; SUPPLIERID&#34;:&#34; 10159&#34;,&#34; SUPPLIERNAME&# 34;:&#34; ALRO STEEL CO。&#34;,&#34; TNAMC&#34;:&#34; PO BOX 30382&#34;,&#34; TNAMB&#34;:&#34; &#34;,&#34; TNAME&#34;:&#34; LANSING&#34;,&#34; TPSTC&#34;:&#34; 48909-7882&#34;,&#34; TCSTE&# 34;:&#34; MI&#34;,&#34; TCCTY&#34;:&#34; USA&#34;,&#34; PHONE&#34;:&#34; 616-248-7687&# 34;,&#34;传真&#34;:&#34; 6164522779&#34;}]

public class SupplierDetails
{
    private string _supplierCode;
private string _supplierName;
private string _internalCompanyId;
private string _address1;
private string _address2;
private string _city;
private string _state;
private string _country;
private string _zipCode;
private string _fax;
private string _phone;
public string SUPPLIERID
{
    get {
        return !string.IsNullOrEmpty(_supplierCode) ? _supplierCode : "-";
    }
    set
    {
        _supplierCode = value.Trim();
    }
}

public string SUPPLIERNAME
{
    get {
        return !string.IsNullOrEmpty(_supplierName) ? _supplierName : "-";
    }
    set
    {
        _supplierName = value.Trim();
    }
}

public string CompanyID
{
    get {
        return !string.IsNullOrEmpty(_internalCompanyId) ? _internalCompanyId : "-";
    }
    set
    {
        _internalCompanyId = value.Trim();
    }
}


public string TNAMC
{
    get {
        return !string.IsNullOrEmpty(_address1) ? _address1 : "-";
    }
    set
    {
        _address1 = value.Trim();
    }
}

public string TNAMB
{
    get {
        return !string.IsNullOrEmpty(_address2) ? _address2 : "-";
    }
    set
    {
        _address2 = value.Trim();
    }
}

public string TNAME
{
    get {
        return !string.IsNullOrEmpty(_city) ? _city : "-";
    }
    set
    {
        _city = value.Trim();
    }
}

public string TCSTE
{
    get {
        return !string.IsNullOrEmpty(_state) ? _state : "-";
    }
    set
    {
        _state = value.Trim();
    }
}

public string TCCTY
{
    get {
        return !string.IsNullOrEmpty(_country) ? _country : "-";
    }
    set
    {
        _country = value.Trim();
    }
}

public string TPSTC
{
    get {
        return !string.IsNullOrEmpty(_zipCode) ? _zipCode : "-";
    }
    set
    {
        _zipCode = value.Trim();
    }
}
public string PHONE
{
    get
    {
        return !string.IsNullOrEmpty(_phone) ? _phone : "-";
    }
    set
    {
        _phone = value.Trim();
    }
}
public string FAX
{
    get
    {
        return !string.IsNullOrEmpty(_fax) ? _fax : "-";
    }
    set
    {
        _fax = value.Trim();
    }
}
public SupplierDetails()
{
    //
    // TODO: Add constructor logic here
    //
}


}

1 个答案:

答案 0 :(得分:1)

我把你所提供的内容最简单的实现放在一起,并发现这有效:

string sdetails = "[{\"SUPPLIERID\":\"10148 \",\"SUPPLIERNAME\":\"ALLIED ELECTRONICS -LUD \",\"TNAMC\":\"ACCOUNTS RECEIVABLE \",\"TNAMB\":\" \",\"TNAME\":\"FORT WORTH \",\"TPSTC\":\"76113 - 2325\",\"TCSTE\":\"TX\",\"TCCTY\":\"USA\",\"PHONE\":\"616 - 365 - 9960 \",\"FAX\":\"6163659895 \"},{\"SUPPLIERID\":\"10159 \",\"SUPPLIERNAME\":\"ALRO STEEL CO. \",\"TNAMC\":\"P.O.BOX 30382 \",\"TNAMB\":\" \",\"TNAME\":\"LANSING \",\"TPSTC\":\"48909 - 7882\",\"TCSTE\":\"MI\",\"TCCTY\":\"USA\",\"PHONE\":\"616 - 248 - 7687 \",\"FAX\":\"6164522779 \"}]";
List<SupplierDetails> supplierslist = JsonConvert.DeserializeObject<List<SupplierDetails>>(sdetails);

您确定问题中列出的JSON字符串是sdetails中的完整答案吗?鉴于错误表明你在字符0处有错误,我怀疑你没有收到你所描述的JSON。