How to return JSON from a odata method

オフライン

Hi,

I created a a serveur method named COCO_MONITORING returning a JSON like this

var innovator = this.getInnovator();
var output= new Newtonsoft.Json.Linq.JObject();
....
return innovator.newResult(output.ToString(Newtonsoft.Json.Formatting.None));

I'm able to call it in odata like this:
https://serveur/1Z62innovator/server/odata/method.COCO_MONITORING

My problem is that the output of the web service is a text/plain containing the json as a text.

I would like to have directly the json (application/json).

How can I do that ?

  • Hi Miraks,

    newResult can just return text. Maybe you can add your output to a temporary Aras item and then return the item?

  • 0 オフライン in reply to AngelaIp

    Hi Angelalp,

    Thank you for your answer.

    If my method is like this:

    return this.getInnovator().newResult(new Newtonsoft.Json.Linq.JObject
    {
    {"return_code", 0} ,
    {"message", "hello world!"}
    }.ToString(Newtonsoft.Json.Formatting.None));

    The output is a text:

    If my method is like this:

    var item = this.getInnovator().newItem();
    item.setProperty("json", new Newtonsoft.Json.Linq.JObject
    {
    {"return_code", 0} ,
    {"message", "hello world!"}
    }.ToString(Newtonsoft.Json.Formatting.None));

    return item;

    The output is a text:

    So, you are right, with your solution the output is well a JSON.

    But a JSON of an Item. Is it possible to send a fully customized JSON ?

    Regards.

  • Hi Miraks,

    standard Aras Method just can return items. "Results" and "Error" are also just items.

    Maybe you can use some kind of custom class or other more native C# techniques, but I am not sure. Some times you see these kind of designs in native Aras code.