2015-12-16 143 views
0

我有一個應用程序在c sharp中使用web api。我有以下json,並且我需要解析閱讀Json值的問題

mobile_synch_tax_r 

要測試條件的值。問題是,雖然此方法使用Windows服務工作,但它不在Web API的控制器中工作。

相關JSON是:

{"SYNC_DATA": { 
    "mobile_synch_tax_r": [ 
    { 
     "idtax_registration":66, 
     "gender": "", 
     "title": "", 
     "name": "AK", 
     "home_address": "", 
     "state_of_origin": "A", 
     "home_town": "", 
     "local_government": "", 
     "occupation": "", 
     "company_name": "", 
     "office_address": "No", 
     "ministry": "", 
     "market": "", 
     "park": "", 
     "phone_number": "", 
     "email_address": "", 
     "photo_url": "", 
     "tax_id": "285", 
     "state": null, 
     "registered_by": "imported", 
     "biometric_status": 0, 
     "registration_type": 2, 
     "group_id": 100, 
     "taxpayer_password": "*6BB", 
     "tax_exempt": 0, 
     "active": 1, 
     "disability": "", 
     "rf1": 1, 
     "rf2": 1, 
     "rf3": 1, 
     "rf4": 1, 
     "rf5": 1, 
     "lf1": 1, 
     "lf2": 1, 
     "lf3": 1, 
     "lf4": 1, 
     "lf5": 1, 
     "registered_on": "2015", 
     "drivers_license_number": "", 
     "national_number": "", 
     "international_passport_number": "", 
     "company_rcc": "", 
     "workplace_category": "", 
     "office_lg": "", 
     "office_city": "n", 
     "parent_id": "", 
     "workplace_type": 0, 
     "marital_status": "", 
     "nationality": "u", 
     "vend_pin": 0, 
     "residential_address_status": "", 
     "dob": null, 
     "surname": "Ad", 
     "first_name": "", 
     "middle_name": "", 
     "utin": "", 
     "last_pw_reset_by": "", 
     "temp_reg": 0, 
     "company_size": "", 
     "business_commencement_date": null, 
     "proprietor_tax_id": "", 
     "business_ownership_type": "", 
     "has_subsidiary": false, 
     "subsidiary": false, 
     "subsidiary_of": "", 
     "n": "", 
     "locked": false, 
     "author": "", 
     "synch_status": false 
    }]}} 

這是在控制器代碼:

  // POST api/ak 
    public HttpResponseMessage Post(HttpRequestMessage value) 
    { 
     var someText = value.Content.ReadAsStringAsync().Result; 
     Library.WriteErrorLog("Data Received" + someText); 

     var objects = JObject.Parse(someText); 
     Library.WriteErrorLog("Objects are" + objects); 
          if (objects != null) 
          { 
           foreach (KeyValuePair<String, JToken> app in objects) 
           { 
            var rootName = app.Key; 
            if (rootName == "mobile_synch_tax_r") 

      {"Have your way with me"}} 

的代碼無法檢查

    rootName=="mobile_synch_tax_r" 

我如何錯過了嗎?

+0

你是否調試過它並觀察'objects'的屬性是什麼? – Luizgrs

+0

是的,我做了...完全相同的代碼在Windows服務應用程序中工作。它只是在網絡API,它是代理 – ewom2468

+2

你解析你提供的exat JSON嗎?如果是這樣,你的''''屬性集合只有一個屬性:「SYNC_DATA」,所以條件'rootName ==「mobile_synch_tax_r」'永遠不會是真的。 – Luizgrs

回答

0

如果你只是尋找"mobile_synch_tax_r"屬性的值,可以使用SelectToken得到它:

var mobile_synch_tax_r = objects.SelectToken("..mobile_synch_tax_r"); 

..遞歸下降操作,所以此查詢搜索JSON對象層次結構第一個屬性名爲"mobile_synch_tax_r",並返回它的值。