System.Collections.Generic.List`1 [System.String] "Ошибка JSON - PullRequest
0 голосов
/ 01 ноября 2018

Я пытаюсь использовать JSON, и я использовал PostMan для возврата ответа эта ошибка счастливая System.Collections.Generic.List`1 [System.String] "}

    public ActionResult SendVFCode(string Phone_Number)
    {
        var jsonSerialiser = new JavaScriptSerializer();
        string error = "";
        var SearchData ="";

        if (Phone_Number == null)
        {
            error = "Must enter your phone number";
        }
        else if ( (db.PhoneNumbers.Select(x =>x.Id).Count() < 0)
              &&  (db.Assistant.Select(x =>x.Id).Count()) < 0)
        {
            error = "There are no data or your account is not activated";
        }
        else
        {                
            SearchData = db.PhoneNumbers.Include(x => x.Assistant)
            .Where(x => x.PhoneNumber == Phone_Number 
            && x.Assistant.IsActive == true).Select(xx =>xx.PhoneNumber).ToList().ToString();
        }

        json = new
        {
            err = error,
            ResultSearchData = SearchData
        };

        return Content(jsonSerialiser.Serialize(json));
    }

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Обратите внимание, что ToList(), за которым следует ToString(), возвращает полностью определенное имя списка вместо содержимого списка, следовательно, вы должны использовать List<string> для хранения строк результата (также необходимо сначала создать список, прежде чем использовать внутри if -блок). Правильная настройка должна быть такой:

public ActionResult SendVFCode(string Phone_Number)
{
    var jsonSerialiser = new JavaScriptSerializer();
    string error = "";
    var SearchData = new List<string>(); // instantiate list of strings

    var phoneCount = db.PhoneNumbers.Select(x => x.Id).Count();
    var assistantCount = db.Assistant.Select(x => x.Id).Count();

    if (Phone_Number == null)
    {
        error = "Must enter your phone number";
    }
    else if (phoneCount < 0 && assistantCount < 0)
    {
        error = "There are no data or your account is not activated";
    }
    else
    {                
        // assign list from query results
        SearchData = db.PhoneNumbers.Include(x => x.Assistant)
        .Where(x => x.PhoneNumber == Phone_Number && x.Assistant.IsActive == true)
        .Select(xx => xx.PhoneNumber).ToList();
    }

    var json = new
    {
        err = error,
        ResultSearchData = SearchData
    };

    return Content(jsonSerialiser.Serialize(json));
}
0 голосов
/ 01 ноября 2018

SearchData не является строкой. Не объявляйте это как строку и не пытайтесь засунуть в нее строку. Это список (вероятно, типа List<string> или типа вашего номера телефона).

var SearchData =""

Должно быть:

List<string> SearchData;

И ваш вызов базы данных должен заканчиваться на .ToList(), а не .ToList().ToString().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...