CHY*_*CHY 3 c# json asp.net-core-mvc
Visual Studio和C#的新手.我正在为.Net Core/MVC React-Redux应用程序(其他人正在研究模型和控制器)的UI工作,作为开发的一部分,我想连接测试控制器以输出我正在阅读的一些JSON从文本文件.
它正在工作,除了C#将我的控制器输出JSON包装在另一组括号中,导致在React中消耗JSON的问题.
我的测试控制器:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
namespace AGDemo.Controllers
{
[Produces("application/json")]
[Route("api/Versions")]
public class VersionsController : Controller
{
// GET: api/Versions
[HttpGet]
public IEnumerable<JsonResult> Get()
{
var data = System.IO.File.ReadAllText(@"..\AGDemo\Api\JSONVersionData.txt");
var dataObj = JsonConvert.DeserializeObject(data);
Console.WriteLine(dataObj)
yield return Json(dataObj);
}
}
}
Run Code Online (Sandbox Code Playgroud)
控制台输出:
[
{
"VersionCode": "0ODD6109 ",
"VersionQualifier": " ",
"VersionID": "a74bb26c-c23f-e711-80da-0050568f4ab2",
"ProductID": "WRAP ",
"PieceName": "HOME ACCENTS ",
"PrintClass": "WRAP ",
"FirstInhomeDate": "2017-12-12 00:00:00.000",
"AccountID": "103448",
"AccountExecutive": "AMANDA COOK (A291)",
"AccountManager": "OLIVIA DOWD (13406)",
"ArtManager": "OLIVIA DOWD (13406)",
"AdUID": "",
"Status": "",
"Queue": "",
"DueDateOverride": "",
"IsLocked": ""
},
{
"VersionCode": "0ODD6110 ",
"VersionQualifier": " ",
"VersionID": "6ad828e1-c23f-e711-80da-0050568f4ab2",
"ProductID": "WRPBAN-IN ",
"PieceName": "HOME ACCENTS BANNER ",
"PrintClass": "WRAP ",
"FirstInhomeDate": "2017-12-12 00:00:00.000",
"AccountID": "103448 ",
"AccountExecutive": "AMANDA COOK (A291)",
"AccountManager": "OLIVIA DOWD (13406)",
"ArtManager": "OLIVIA DOWD (13406)",
"AdUID": "",
"Status": "",
"Queue": "",
"DueDateOverride": "",
"IsLocked": ""
}
]
Run Code Online (Sandbox Code Playgroud)
控制器输出:
[{"contentType":null,"serializerSettings":null,"statusCode":null,"value":[{"VersionCode":"0ODD6109 ","VersionQualifier":" ","VersionID":"a74bb26c-c23f-e711-80da-0050568f4ab2","ProductID":"WRAP ","PieceName":"HOME ACCENTS ","PrintClass":"WRAP ","FirstInhomeDate":"2017-12-12 00:00:00.000","AccountID":"103448","AccountExecutive":"AMANDA COOK (A291)","AccountManager":"OLIVIA DOWD (13406)","ArtManager":"OLIVIA DOWD (13406)","AdUID":"","Status":"","Queue":"","DueDateOverride":"","IsLocked":""},{"VersionCode":"0ODD6110 ","VersionQualifier":" ","VersionID":"6ad828e1-c23f-e711-80da-0050568f4ab2","ProductID":"WRPBAN-IN ","PieceName":"HOME ACCENTS BANNER ","PrintClass":"WRAP ","FirstInhomeDate":"2017-12-12 00:00:00.000","AccountID":"103448 ","AccountExecutive":"AMANDA COOK (A291)","AccountManager":"OLIVIA DOWD (13406)","ArtManager":"OLIVIA DOWD (13406)","AdUID":"","Status":"","Queue":"","DueDateOverride":"","IsLocked":""}]}]
Run Code Online (Sandbox Code Playgroud)
我正在寻找的输出(应该与控制台输出相同):
[{"VersionCode":"0ODD6109 ","VersionQualifier":" ","VersionID":"a74bb26c-c23f-e711-80da-0050568f4ab2","ProductID":"WRAP ","PieceName":"HOME ACCENTS ","PrintClass":"WRAP ","FirstInhomeDate":"2017-12-12 00:00:00.000","AccountID":"103448","AccountExecutive":"AMANDA COOK (A291)","AccountManager":"OLIVIA DOWD (13406)","ArtManager":"OLIVIA DOWD (13406)","AdUID":"","Status":"","Queue":"","DueDateOverride":"","IsLocked":""},{"VersionCode":"0ODD6110 ","VersionQualifier":" ","VersionID":"6ad828e1-c23f-e711-80da-0050568f4ab2","ProductID":"WRPBAN-IN ","PieceName":"HOME ACCENTS BANNER ","PrintClass":"WRAP ","FirstInhomeDate":"2017-12-12 00:00:00.000","AccountID":"103448 ","AccountExecutive":"AMANDA COOK (A291)","AccountManager":"OLIVIA DOWD (13406)","ArtManager":"OLIVIA DOWD (13406)","AdUID":"","Status":"","Queue":"","DueDateOverride":"","IsLocked":""}]
Run Code Online (Sandbox Code Playgroud)
我尝试过测试不同的控制器动作类型.结果是我显示的内容或者如果操作结果设置为"对象",我的JSON被包含在[]中而没有"contentType","serializerSettings"等等.
我知道我可以直接在我的动作函数中在React-Redux中打开JSON文本文件,但最终UI将与C#控制器集成,我宁愿调用控制器来实现这一点.
关于我需要改变什么的想法?
你需要回来JsonResult,而不是IEnumerable<JsonResult>.
这将告诉MVC将其作为一个处理ActionResult,而不是应该序列化为JSON的任意对象.
或者将其更改为返回object并直接返回对象而不是使用结果.
| 归档时间: |
|
| 查看次数: |
328 次 |
| 最近记录: |