2017-05-23 21 views
0

私は自分のアプリケーション内の一つの方法を実装していますが、それは値の解析中に予期しない文字が検出されました。それは、Visual Studio OK罰金から実行したときのパスは「」、行0、位置0


ファイルシステムログに、このエラーを取得して、タスクスケジューラから実行したとき。例外:同期プロセスで例外が発生し、サプライヤのリストとメソッド名を取得するときにGetSuppliersが発生しました。例外はNewtonsoft.Json.JsonReaderExceptionです。値の解析中に予期しない文字が検出されました:Lineton 0、Newtonsoft.Json.Json.JsonTextReader.ParseValue()at Newtonsoft.Json.JsonTextReader.ReadInternal()Newtonsoft.Json.JsonTextReader Newtonsoft.Json.Serialization

私の方法

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形式の文字列を返す

でNewtonsoft.Json.Serialization.JsonSerializerInternalReader.ReadForType(JsonReaderリーダー、JsonContract契約、ブールhasConverter、ブールInArrayバリ)で.Read()

[{"SUPPLIERID": "10148"、 "SUPPLIERNAME": "ALLIED ELECTR TPSTC ":" 76113-2325 "、" TCSTE ":" TX "、" TCCTY ":" ONIX - LUD "、" TNAMC ":"アカウント受領可能 "、" TNAMB " ":" USA "、" PHONE ":" 616-365-9960 "、" FAX ":" 6163659895 "}、{" SUPPLIERID ":" 10159 "、" SUPPLIERNAME ":" ALRO STEEL CO。 "、" TNAMC " : "PO TOSTC ":" 48909-7882 "、" TCSTE ":" MI "、" TCCTY ":" USA "、" PHONE ":" 616-248-7687 " "FAX":" 6164522779「}]

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

GetSuppliersのコードを投稿できますか?生の反応は何ですか? –

+0

申し訳ありませんJosh Knackは、Json文字列を取得するためのサードパーティサービスメソッドです。そのコードはありません。 –

+0

返品のサンプルを投稿してください。また、SupplierDetailsのコードは参考になります。 –

答えて

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を受け取っていないと思われます。

関連する問題