2015-07-29 3 views
2

Это моя первая попытка попытаться разобрать json-ответ с json.net, и я полностью потерян. Я включил раздел проанализированного json ниже. То, что я хотел бы сделать, - это цикл через массив обратных ссылок. Я попытался реализовать различные образцы из документации newtonsoft, но они, похоже, не работают, и я думаю, что это потому, что мой json не соответствует их образцам, и у меня нет знаний, чтобы внести необходимые исправления. Если бы кто-то мог предоставить код C#, чтобы начать меня, я был бы очень признателен.Parsing Custom JSON Response with JSON.NET

Спасибо, Chaos

{ 
"accounts": [ 
    { 
     "10555": { 
      "sites": [ 
       { 
        "12222": { 
         "pages_indexed_in_bing": {}, 
         "download_time": null, 
         "backlinks": [ 
          { 
           "anchor_text": "websites for insurance agents", 
           "source_url": "http://win-winbusinesses.com/insurance/how-to-building-an-effective-insurance-website/", 
           "found_on": "2015-07-15", 
           "page_authority": null, 
           "link_strength": 3, 
           "domain": "win-winbusinesses.com", 
           "domain_authority": 17 
          }, 
+0

Используйте инструмент, например http://jsonclassgenerator.codeplex.com/ – Aybe

+0

Спасибо за ответ. Я попробовал несколько генераторов классов, но ответ json, с которым я работаю, вызвал ошибки со всеми из них, поэтому я теперь пытаюсь напрямую запросить ответ. – Chaos

+1

Вы должны отправить полный ответ здесь. – Aybe

ответ

0

Прежде всего, как было сказано ранее, JSON вы недействительно. Я предполагаю, что это должно выглядеть следующим образом:

{ 
"accounts": [ 
    { 
     "10555": { 
      "sites": [ 
       { 
        "12222": { 
         "pages_indexed_in_bing": { 

         }, 
         "download_time": null, 
         "backlinks": [ 
          { 
           "anchor_text": "websites for insurance agents", 
           "source_url": "http://win-winbusinesses.com/insurance/how-to-building-an-effective-insurance-website/", 
           "found_on": "2015-07-15", 
           "page_authority": null, 
           "link_strength": 3, 
           "domain": "win-winbusinesses.com", 
           "domain_authority": 17 
          } 
         ] 

       } 
      } 
     ] 
    } 
    } 
] 
} 

И в соответствии с этим JSON, вы классы должны выглядеть следующим образом, если вы хотите добиться успеха newtonsoft разбора:

public class PagesIndexedInBing 
{ 
} 

public class Backlink 
{ 
    public string anchor_text { get; set; } 
    public string source_url { get; set; } 
    public string found_on { get; set; } 
    public object page_authority { get; set; } 
    public int link_strength { get; set; } 
    public string domain { get; set; } 
    public int domain_authority { get; set; } 
} 

public class __invalid_type__12222 
{ 
    public PagesIndexedInBing pages_indexed_in_bing { get; set; } 
    public object download_time { get; set; } 
    public List<Backlink> backlinks { get; set; } 
} 

public class Site 
{ 
    public __invalid_type__12222 __invalid_name__12222 { get; set; } 
} 

public class __invalid_type__10555 
{ 
    public List<Site> sites { get; set; } 
} 

public class Account 
{ 
    public __invalid_type__10555 __invalid_name__10555 { get; set; } 
} 

public class RootObject 
{ 
    public List<Account> accounts { get; set; } 
} 

Как вы можете увидеть здесь могут быть проблемы, поскольку вы используете имена классов/var, которые являются численными, поэтому вы, вероятно, тоже должны это проверить.

+0

Спасибо. Я понимаю проблему с именами классов/var, которые я пробовал и с этим генератором классов. Это способ, которым я пытаюсь запросить json без его сериализации. – Chaos

+0

Felix или Amit, может ли кто-нибудь из вас дать больше информации о том, как json недействителен? Я хотел бы передать эти проблемы поставщику API. Есть ли спецификация, которая могла бы предоставить документацию об ошибках проверки? Спасибо за вашу помощь. – Chaos

+0

Из того, что я вижу, есть две проблемы: 1. Некоторые скобки, входящие в формат JSON ת, отсутствовали/были неуместны. Наверное, потому что это всего лишь часть ответа, а не все. 2. Формат JSON описывает данные, а также структуру класса, включая его имя. Поэтому ответ, который, согласно формату JSON, подразумевает, что класс, имя которого «12222» недействителен, потому что имя класса должно начинаться с буквы. –