Facing an issue with JArray to generate data
My current APIM Policy
<log-to-eventhub logger-id="testjayeventhub">@{return new JObject(
new JProperty("EventTime", DateTime.UtcNow.ToString()),
new JProperty("ServiceName", context.Deployment.ServiceName),
new JProperty("RequestId", context.RequestId),
new JProperty("RequestIp", context.Request.IpAddress),
new JProperty("OperationName", context.Operation.Name)
).ToString();}</log-to-eventhub>
The above will generate the data with the below model and send to the eventhub
{
"EventTime": "...",
"ServiceName": "yyyy",
"RequestId": "yyyy",
"RequestIp": "yyy",
"OperationName": "xxx"
}
However, I want to change this data model like below
{
"records": [
{
"EventTime": "...",
"ServiceName": "yyyy",
"RequestId": "yyyy",
"RequestIp": "yyy",
"OperationName": "xxx"
}
]
}
So I'm trying to change my policy but i can't able to do that. So far i have tried the below
JObject jobj = new JObject(
new JProperty("EventTime", DateTime.UtcNow.ToString()),
new JProperty("ServiceName", context.Deployment.ServiceName),
new JProperty("RequestId", context.RequestId),
new JProperty("RequestIp", context.Request.IpAddress),
new JProperty("OperationName", context.Operation.Name)
);
JArray a = new JArray();
a.Add(jobj);
But this will just add the JObject into array but not sure how the record model will get into..
Try this, seems to work for me ...
var jsonString = new JObject(
new JProperty("records", new JArray() {
new JObject(
new JProperty("EventTime", "yyy"),
new JProperty("ServiceName", "yyy"),
new JProperty("RequestId", "yyy"),
new JProperty("RequestIp", "yyy"),
new JProperty("OperationName", "yyy")
)
})
).ToString();
return jsonString;