Azure 함수에서 JSON을 반환하는 방법
나는 Azure Functions와 놀고 있다.하지만, 나는 꽤 간단한 것에 당황한 것 같아.기본적인 JSON을 반환하는 방법을 찾고 있습니다.JSON을 만들고 내 요청에 어떻게 되돌려야 할지 모르겠어요.
옛날에는 개체를 만들고 속성을 채운 다음 직렬화했습니다.그래서 저는 이 길을 걷기 시작했습니다.
#r "Newtonsoft.Json"
using System.Net;
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
log.Info($"Running Function");
try {
log.Info($"Function ran");
var myJSON = GetJson();
// I want myJSON to look like:
// {
// firstName:'John',
// lastName: 'Doe',
// orders: [
// { id:1, description:'...' },
// ...
// ]
// }
return ?;
} catch (Exception ex) {
// TODO: Return/log exception
return null;
}
}
public static ? GetJson()
{
var person = new Person();
person.FirstName = "John";
person.LastName = "Doe";
person.Orders = new List<Order>();
person.Orders.Add(new Order() { Id=1, Description="..." });
?
}
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public List<Order> Orders { get; set; }
}
public class Order
{
public int Id { get; set; }
public string Description { get; set; }
}
하지만, 저는 지금 연재 및 반품 절차에 완전히 갇혀 있습니다.저는 ASP에 JSON을 반환하는 것에 익숙해진 것 같습니다.모든 것이 액션인 NET MVC
다음은 Azure 함수가 XML 대신 올바른 형식의 JSON 개체를 반환하는 전체 예입니다.
#r "Newtonsoft.Json"
using System.Net;
using Newtonsoft.Json;
using System.Text;
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
var myObj = new {name = "thomas", location = "Denver"};
var jsonToReturn = JsonConvert.SerializeObject(myObj);
return new HttpResponseMessage(HttpStatusCode.OK) {
Content = new StringContent(jsonToReturn, Encoding.UTF8, "application/json")
};
}
브라우저에서 엔드포인트로 이동하면 다음과 같이 표시됩니다.
{
"name": "thomas",
"location": "Denver"
}
가장 쉬운 방법은 아마도 하는 것이다
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "/jsontestapi")] HttpRequest req,
ILogger log)
{
return new JsonResult(resultObject);
}
content-type을 다음과 같이 설정합니다.application/json
응답 본문에 json을 반환한다.
가져가실 수 있습니다.req
부터
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
를 사용하여 응답을 작성합니다.
return req.CreateResponse(HttpStatusCode.OK, json, "application/json");
또는 다른 과부하 조립품 중 하나라도System.Web.Http
.
자세한 것은, learn.microsoft.com 를 참조해 주세요.
이것은, 명시적으로 시리얼화할 필요 없이, 「애플리케이션/json」미디어 타입을 사용하는 것만으로 실현될 수 있을 것 같습니다.Person
와 함께Newtonsoft.Json
.
다음은 Chrome의 전체 작동 샘플입니다.
{"FirstName":"John","LastName":"Doe","Orders":[{"Id":1,"Description":"..."}]}
코드는 다음과 같습니다.
[FunctionName("StackOverflowReturnJson")]
public static HttpResponseMessage Run([HttpTrigger("get", "post", Route = "StackOverflowReturnJson")]HttpRequestMessage req, TraceWriter log)
{
log.Info($"Running Function");
try
{
log.Info($"Function ran");
var myJSON = GetJson(); // Note: this actually returns an instance of 'Person'
// I want myJSON to look like:
// {
// firstName:'John',
// lastName: 'Doe',
// orders: [
// { id:1, description:'...' },
// ...
// ]
// }
var response = req.CreateResponse(HttpStatusCode.OK, myJSON, JsonMediaTypeFormatter.DefaultMediaType); // DefaultMediaType = "application/json" does the 'trick'
return response;
}
catch (Exception ex)
{
// TODO: Return/log exception
return null;
}
}
public static Person GetJson()
{
var person = new Person();
person.FirstName = "John";
person.LastName = "Doe";
person.Orders = new List<Order>();
person.Orders.Add(new Order() { Id = 1, Description = "..." });
return person;
}
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public List<Order> Orders { get; set; }
}
public class Order
{
public int Id { get; set; }
public string Description { get; set; }
}
JSON은 꽤 쉬워요, 뉴턴소프트.Json 라이브러리는 특별한 경우입니다.스크립트 파일의 맨 위에 다음과 같이 추가하여 포함할 수 있습니다.
#r "Newtonsoft.Json"
using Newtonsoft.Json;
그러면 기능이 다음과 같이 됩니다.
public static string GetJson()
{
var person = new Person();
person.FirstName = "John";
person.LastName = "Doe";
person.Orders = new List<Order>();
person.Orders.Add(new Order() { Id=1, Description="..." });
return JsonConvert.SerializeObject(person);
}
메서드 시그니처는 다음과 같이 변경할 수 있습니다.
public static async Task<object> Run(HttpRequestMessage req, TraceWriter log)
그러면 JSON 데이터가 반환됩니다.
저도 비슷한 문제가 있었는데 이게 제일 인기 있는 댓글인 것 같아요.어떤 노드를 사용하는지 파악한 후 아래가 작동하여 원하는 노드를 정확하게 제공합니다.다른 예에서는 JSON을 반환하는 문자열 표현을 반환합니다.
시스템을 사용하여 선언하는 것을 잊지 마십시오.텍스트 및 추가:
return JsonConvert.SerializeObject(person);
Juunas 응답에 따라 GetJson 기능을 수행합니다.
return new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new StringContent(GetJson(), Encoding.UTF8, "application/json")
};
#r "Newtonsoft.Json"
using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;
public static IActionResult Run(HttpRequest req, ILogger log)
{
(string name, string surname) = ("James", "Ozzy");
return new ObjectResult(new { name, surname }) ;
}
소유자 응답을 작성할 수 있습니다.
var response = new HttpResponseMessage(HttpStatusCode.OK) {
Content = json
};
return new ObjectResult(response);
둘 다 사용하지 않는 경우Newtonsoft.Json
또는System.Web.Http
(이 답변과 같이)
var msg = new Msg("Hello, World");
var response = req.CreateResponse(HttpStatusCode.OK);
response.WriteAsJsonAsync(msg);
return response;
언급URL : https://stackoverflow.com/questions/38943858/how-do-i-return-json-from-an-azure-function
'source' 카테고리의 다른 글
React.js에서 Axios와 함께 비동기/Awit 사용 (0) | 2023.02.22 |
---|---|
컴포넌트 템플릿에서 요소를 선택하려면 어떻게 해야 합니까? (0) | 2023.02.22 |
키워드 제목, 내용 또는 태그에 존재하는 경우 Word press get_posts (0) | 2023.02.22 |
jq를 사용하여 CSV에서 JSON으로 (0) | 2023.02.22 |
WPML의 "String translation"에 문자열이 표시되지 않는 이유는 무엇입니까? (0) | 2023.02.22 |