Как разобрать JSON и получить данные построчно? - PullRequest
0 голосов
/ 20 февраля 2020

Я хотел бы спросить, как мне получить данные, используя JSON. Я использую веб-API и выполняю развертывание с использованием запроса и ответа.

Class1.cs

Это вызов веб-API с использованием запроса и ответа.

public static string Test()

{

    string strReq = "{ \"header\": { \"Token\": \"ba42d11f - e0ae - 4d6c - 800a - 1564485b7ccb\"},\"body\": { \"SOHeaders\": [{ \"WarehouseCode\": \"W001\", \"CompanyCode\": \"C001\", \"SONo\": \"SO001\"}]}}";
    UploadToBCSSoftSCM a = new UploadToBCSSoftSCM();
    string strRes = a.GetSOSts(strReq);

    return strRes;
}

HomeController.cs

Я могу получить ответ отсюда, но не знаю, как разбить или проанализировать данные.

public ActionResult Index()
{
    // ViewBag.Title = "Home Page";

    string r = Class1.Test();
    Debug.WriteLine(r);

    return View();
}

Результат ответа

{
    "header": {
        "Token": "7c6cbeba-ff57-40d2-8759-84ccb59235fd",
        "DtTime": "2020-02-20 13:10:34.365",
        "ResultCode": "S",
        "ResultMsg": ""
    },
    "body": [
        {
            "WarehouseCode": "W001",
            "CompanyCode": "C001",
            "SONo": "SO001",
            "SOSts": "New"
        }
    ]
}

1 Ответ

0 голосов
/ 20 февраля 2020

O site json2csharp.com вы можете создавать классы, необходимые для десериализации JSON.

public class Header
{
    public string Token { get; set; }
    public string DtTime { get; set; }
    public string ResultCode { get; set; }
    public string ResultMsg { get; set; }
}

public class Body
{
    public string WarehouseCode { get; set; }
    public string CompanyCode { get; set; }
    public string SONo { get; set; }
    public string SOSts { get; set; }
}

public class RootObject
{
    public Header header { get; set; }
    public List<Body> body { get; set; }
}

Затем, используя JSON. NET, вы может десериализовать ваш ответ на объекты.

var data = JsonConvert.DeserializeObject<RootObject>(json);

, а затем в l oop вы можете получить доступ ко всем записям

foreach(var d in data.body)
{
}
...