Xamarin在解析值时遇到意外的字符:W。路径'',第0行,第0位

时间:2017-09-14 10:23:51

标签: c# json asp.net-mvc

我使用asp.net mvc和ms sql。它给出了2个错误。我不明白为什么。

private string Url = @"http://192.168.x.x/HbbTestLast/";
    private async Task<HttpClient> GetClient()
    {
        HttpClient client = new HttpClient();
        client.DefaultRequestHeaders.Add("Accept", "application/json");
        return client;            
    }

    public async Task<IEnumerable<oyunlar>> GetAll()
    {
        JsonSerializerSettings jsSettings = new JsonSerializerSettings();
        jsSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
        HttpClient client = await GetClient();
        var result = await client.GetStringAsync(Url + "/oyunlar/oyunlariGetir");
        var mobileResult = JsonConvert.DeserializeObject <oyunlar>(result, jsSettings);
        //return JsonConvert.DeserializeObject<IEnumerable<oyunlar>>(client.ToString(), jsSettings);
        var deneme = JsonConvert.DeserializeObject<IEnumerable<oyunlar>>(mobileResult.ToString());
        return deneme;

    }
    public async Task<IEnumerable<salonlar>> PostSalon()
    {
        JsonSerializerSettings jsSettings = new JsonSerializerSettings();
        jsSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
        HttpClient client = await GetClient();
        var result = await client.PostAsync(Url,new StringContent(@"salonlars/"));
        var mobileResult = JsonConvert.DeserializeObject<salonlar>(result.ToString(), jsSettings);
        return JsonConvert.DeserializeObject<IEnumerable<salonlar>>(mobileResult.ToString(), jsSettings);

    }
}

First error Newtonsoft.Json.SerializableException:转换值时出错......

[第二个错误] [2] Newtonsoft.Json.JsonTextReaderException:意外的字符......

我该如何解决?

更新

private async void LoadData()
    {
       try
        {
            var collection = await manager.GetAll();
            foreach (oyunlar item in collection)
                model.Add(item);
            //lstOyunlar.BindingContext = collection;
        }
       catch(Exception ex)
        {
            await DisplayAlert("Hata :", ex.ToString(), "Ok", "Cancel");
        }
    }

GetAll()使用GetAll()和PostSalon()

发送null

更新 可序列化的GetAll()

[System.Web.Mvc.HttpGet]
    public JsonResult OyunlariGetir(HttpConfiguration config)
    {
        var oyunListe = db.oyunlars.Include(o => o.oyun_turu).Include(o => o.salonlar);
        JsonSerializerSettings jsSettings = new JsonSerializerSettings();
        jsSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
        var converted = JsonConvert.SerializeObject(oyunListe, null, jsSettings);
        return Json(converted, JsonRequestBehavior.AllowGet);

    }

和PostSalon()

[HttpPost]
    public JsonResult  SalonlariGetir()
    {
        JsonSerializerSettings jsSettings = new JsonSerializerSettings();
        jsSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
        var salonListe = db.salonlars;
        var converted =  JsonConvert.SerializeObject(salonListe, null, jsSettings);            
        return Json(converted, JsonRequestBehavior.AllowGet);
      //  return converted;
    }

更新

public virtual DbSet<salonlar> salonlars { get; set; }

沙龙模型

public partial class salonlar
{
    public int salon_id { get; set; }
    public string salon_adi { get; set; }
    public string salon_adresi { get; set; }
    public string salon_aciklama { get; set; }
    public string salon_telno { get; set; }

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual ICollection<oyunlar> oyunlars { get; set; }
}

salonGetir()结果

  

“[{\”oyunlars \“:[],\”salon_id \“:300,\”salon_adi \“:\”KültürMerkeziTiyatro Salonu \“,\”salon_adresi \“:\”AntakyaLisesiKarşısı\ “,”salon_aciklama \“:\”Kültürmerkezi\“,\”salon_telno \“:\”03262160652 \“},{\”oyunlars \“:[{\”oyun_turu \“:{\”oyunlars \“: [{\“oyunculars \”:[],\“oyun_id \”:170,\“oyun_adi \”:\“KadınBirŞiir\”,\“oyun_tarihi \”:\“2018-03-08T00:00:00 \“,\”salon_id \“:400,\”tur_id \“:20,\”oyun_aciklama \“:\”8MartDünyaKadınlarGünündekadıngahaiyianlatılamazdı.. \“,\”oyun_suresi \“:\”1 SAAT \”,\ “oyun_foto \”:空}],\ “tur_id \”:20,\ “tur_adi \”:\ “DRAM \”},\ “oyunculars \”:[],\ “oyun_id \”: 160,\“oyun_adi \”:\“AdıKadın\”,\“oyun_tarihi \”:\“2017-09-09T00:00:00 \”,\“salon_id \”:400,\“tur_id \”:20 ,“oyun_aciklama \”:\“20:30 DaMeclisKültürSanatMerkezinde Sizlerle \”,\“oyun_suresi \”:\“1.5 Saat \”,\“oyun_foto \”:null},{\“oyun_turu \”: {\“oyunlars \”:[{\“oyunculars \”:[],\“oyun_id \”:160,\“oyun_adi \”:\“AdıKadın\”,\“oyun_tarihi \”:\“2017-09 -09T00:00:00 \ “\ ”salon_id \“:400,\ ”tur_id \“:20,\” oyun_acik lama \“:\”20:30 DaMeclisKültürSanatMerkezinde Sizlerle \“,\”oyun_suresi \“:\”1.5 Saat \“,\”oyun_foto \“:null}],\”tur_id \“:20,\ “tur_adi \”:\“Dram \”},\“oyunculars \”:[],\“oyun_id \”:170,\“oyun_adi \”:\“KadınBirŞiir\”,\“oyun_tarihi \”:\ “2018-03-08T00:00:00”,\“salon_id \”:400,\“tur_id \”:20,\“oyun_aciklama \”:\“8MartDünyaKadınlarGünündekadındaiiyianlatılamazdı.. \” ,“oyun_suresi \”:\“1 Saat \”,\“oyun_foto \”:null},{\“oyun_turu \”:{\“oyunlars \”:[],\“tur_id \”:10,\“ tur_adi \ “:\” Komedi \ “},\” oyunculars \ “:[{\” oyuncu_id \ “:1,\” oyuncu_adi \ “:\” 穆拉特\”,\ “oyuncu_soyadi \”:\ “耶尔马兹\” ,“oyun_id \”:180,\“oyuncu_foto \”:null}],\“oyun_id \”:180,\“oyun_adi \”:\“EksikBirŞeyMiVar?\”,\“oyun_tarihi \”: \“2018-05-17T00:00:00 \”,\“salon_id \”:400,\“tur_id \”:10,\“oyun_aciklama \”:\“O gemibirgüngelecek!\”,\“oyun_suresi \“:\”2 Saat \“,\”oyun_foto \“:null}],\”salon_id \“:400,\”salon_adi \“:\”MeclisKültürSanatMerkezi \“,”salon_adresi“:\ “GeneralŞükrüKanatlıMahallesi,CumhuriyetAlanıNo:2,31030 Anta kya / Hatay \“,\”salon_aciklama \“:\”MeclisKültürSanatMerkezi \“,\”salon_telno \“:\”03262156000 \“},{\”oyunlars \“:[],\”salon_id \“: 500,“salon_adi”:“AmfiTiyatroSümerler”,“salon_adresi”:“SümerlerMahallesi,10。Sk。 No:14,31160 Antakya / Hatay \“,\”salon_aciklama \“:\”AmfiTiyatroSümerler\“,\”salon_telno \“:null}]”

更新

I think it's problem

1 个答案:

答案 0 :(得分:0)

您的JSON无效,因为它以"开头和结尾。

这不是有效的JSON。

您需要验证JSON的生成位置,并确保它不会将"放在开头和结尾。