我使用此方法从列表生成JSON:
last code
但返回JSON时会出现以下错误:
期望对象或数组,而不是字符串
多个JSON根元素
您在this链接中看到JSON文件,并在this网站中对其进行测试:
修改:
我以此更改代码:
[HttpPost]
[Route("api/Users/GetAllGoodInCat")]
public object GetAllGoodInCat([FromBody]GoodsCatId goodsCatId)
{
try
{
if (goodsCatId.id != 0)
{
var getCat = (from a in db.goodsGroups
where a.Id == goodsCatId.id
select a).SingleOrDefault();
if (getCat != null)
{
var getAllfood = from a in db.goods
where a.groupId == goodsCatId.id
orderby a.Id
select a;
var resultList = new List<string>();
foreach (var good in getAllfood)
{
var obj = new SearchGoods()
{
good = new MyGoods
{
id = good.Id,
name = good.name,
price = good.price,
brand = new MyGoodsBrand
{
id = getCat.Id,
name = getCat.title,
image = getCat.image
}
}
};
resultList.Add(new JavaScriptSerializer().Serialize(obj));
}
return resultList;
}
}
return message.ProgramError();
}
catch (Exception)
{
return message.ProgramError();
}
}
private class AllCat
{
public int id;
public string name;
public string image;
public SubLevelOne subLevelOne;
}
private class SubLevelOne
{
public int id;
public string name;
public string image;
public SubLevelTwo subLevelTwo;
}
private class SubLevelTwo
{
public int id;
public string name;
public string image;
}
现在我的json就像这个链接:
[
"{\"good\":{\"id\":1,\"name\":\"برنج دانه بلند محسن\",\"price\":20000,\"brand\":{\"id\":22,\"name\":\"برنج محسن\",\"image\":\"testmy.png\"}}}",
"{\"good\":{\"id\":2,\"name\":\"برنج عطری\",\"price\":30000,\"brand\":{\"id\":22,\"name\":\"برنج محسن\",\"image\":\"testmy.png\"}}}",
"{\"good\":{\"id\":3,\"name\":\"برنج سر سیاه\",\"price\":15000,\"brand\":{\"id\":22,\"name\":\"برنج محسن\",\"image\":\"testmy.png\"}}}"
]
但是我想要……this
(\)还有json文件吗?
答案 0 :(得分:1)
我建议您使用Nuget软件包中提供的C#NewtonSoft Json软件包。
您可以这样做:
var resultList = new List<SearchGoods>();
并且:
resultList.Add(obj);
最后只需返回:
return JsonConvert.SerializeObject(resultList);
它应该给您正确的结果。
答案 1 :(得分:0)
我认为您的方法类型应为JsonResult,
public JsonResualt GetAllGoodInCat([FromBody]GoodsCatId goodsCatId){}
然后 在return方法中,您应该这样返回Json
return Json(model, JsonRequestBehavior.AllowGet);
答案 2 :(得分:-1)
您的json格式无效,这就是为什么您会收到所有这些错误的原因。您已将“”包围着json的每个对象和数组。只需删除它,您就可以使用了。
我已经清理了您的json:
public static class PredicateBuilder
{
public static Expression<Func<T, bool>> MakePredicate<T>(this IEnumerable<T> source)
{
return null;
}
public static Expression<Func<T, bool>> True<T>() { return f => true; }
public static Expression<Func<T, bool>> False<T>() { return f => false; }
public static Expression<Func<T, bool>> True<T>(IQueryable<T> query) { return f => true; }
public static Expression<Func<T, bool>> False<T>(IQueryable<T> query) { return f => false; }
希望这对您有帮助!