我在应用程序中实现了一个方法,当它从visual studio运行时很好,但是当它从任务调度程序运行时在日志文件中出现此错误
System.Exception:同步过程中发生异常,同时获取供应商列表和方法名称为GetSuppliers。异常是Newtonsoft.Json.JsonReaderException:解析值时遇到意外的字符:C。第0行,位于Newtonsoft.Json.JsonTextReader.ParseValue()的Newtonsoft.Json.JsonTextReader.ParseValue(),位于Newtonsoft.Json.Json.JsonTextReader的Newtonsoft.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
//
}
}
答案 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。