9 Followers · 447 Posts

JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write.

Question Jimmy Christian · Jun 17, 2019

Hello,

I am taking some intro lessons in REST from the online courses. Below is a very simple code i wrote. But when i try to see the output by entering the url

http://localhost:57773/rest/coffeemakerapp/coffeemaker i get an error "

This page isn’t working

If the problem continues, contact the site owner.

HTTP ERROR 401

Thanks,

Jimmy

Class demo.CoffeeMakerRestServer Extends %CSP.REST{XData UrlMap [ XMLNamespace = "http://www.intersystems.com/urlmap" ]{<Routes><Route Url="/coffeemaker" Method="GET" Call="GetCoffeeMakerInfo"/></Routes>}ClassMethod GetCoffeeMakerInfo() As %Status{S
7
0 887
Article Peter Cooper · May 10, 2018 3m read

Index to Articles

Published 2018-05-11 Last edit -

Hi All

I this article I detail some strategic issues that a new development UI will need to address - these are the ones that I can think of now - others may come to light during this journey.

See the webinar by Eduard Lebedyuk here from the last Global Summit describing  modern web development and Caché

And, as always, if I have missed something please comment....

13
2 1642
Article Rubens Silva · Oct 8, 2019 2m read

Hello again and welcome to the next tutorial on this series: Part 5 - Errors. Here we are going to learn how Frontier handles unexpected errors and how we can force them.

  1. Core concepts
  • Getting started
  • Creating a simple request
  • Query parameters
  • Aliasing query parameters
  • Changing output format
  • Rest query parameters
  • Inferring object instances
  • Using literal notation
  • Seamlessly mixing instances with literals
  • Returning streams
  1. Handling payloads
  • ​​How it works
  • Making it useful
  • Unmarshalling payloads into instances
  • Using the unmarshaller to EDIT an existing object
  1. Using the SQL API
  • ​​Creating
0
0 410
Announcement Anastasia Dyubaylo · Oct 3, 2019

Hi Community!

We are pleased to invite you to the upcoming webinar in Spanish "Desarrollar y gestionar APIs con InterSystems IRIS Data Platform" / "Developing and managing APIs with InterSystems IRIS Data Platform" on October 15 at 16:00 CET!

Are you a backend developer? Or a Systems integration specialist? If so… this webinar is for you!

0
0 256
Question Craig Regester · Sep 30, 2019

Good morning -

I am attempting to pass some HL7 content (say, a complete ADT message) from one server to another via REST/JSON - for reasons. 

I can get the data across but when I try to create an EnsLib.HL7.Message object from the message in the JSON body, I end up with just the start of an HL7 msg in the resulting object. Looks like: MSH|^~\&

The start of the code accepting the data looks like this:

tReq = {}.%FromJSON(%request.Content.Read())
tInput = tReq.Message

tMsg = ##class(EnsLib.HL7.Message).%New()
tMsg.ImportFromString(tInput)
tMsg.DocType = "2.3.1:ADT_A01"

So now if I take that

3
0 1159
Article Ed de Moel · Aug 29, 2019 7m read

Some time ago, InterSystems introduced the concept of %DynamicObjects.
This feature is a powerful tool that makes it very easy to convert any string of JSON text to objects and vice versa.
However, in the work that J2 Interactive is doing for our customers, there are a couple of things that "need some tweaking".

Very often, we create REST services for our customers. Those services have a payload (in JSON format) that contains information that our customer expects in the form of an object that is proprietary to them.
We can easily convert that JSON stream to a %DynamicObject, but, if we try to

3
2 1381
Article Sean Connelly · May 31, 2017 28m read

Cogs Library

Over the next few months I will be releasing a number of open source libraries and tools to the Caché community.

Most of the code has evolved from previous production grade solutions over the years and I am collating it together under a single overarching library package that I am calling Cogs.

38
4 1663
Question Jimmy Christian · Jul 16, 2019

Hello community,

I am trying to parse the below HttpResponse in Cache. Cannot get the Iterator to work. Is there a single loop which can parse both or single messages and grab the error?

{
error:[
{ txt1:'error msg1'},

{ txt2:'error msg2'},
]
}

 

{
error: {
txt1:[
'error msg1',

'error msg2'
]
}

 

Thanks,

Jimmy Christian

16
0 2374
Question Kurro Lopez · May 16, 2019

Hi all,

I have a class that I want to serialize to JSon. So I'm using the object %ZEN.Auxiliary.jsonProvider)

set myClass = ##class(myapp.myclass).%New()

set myClass.property1 ="value 1"

set myClass.property2 = "value 2"

set myClass.property3 = "value 3"

do ##class(%ZEN.Auxiliary.jsonProvider).%WriteJSONStreamFromObject(.tStream,myClass ,,,1,"ed")

write tStream.Read()

By definition of myclass, all properties are serialized, that's fine. But I want not serialize the property3. I think is using a XML attribute in the property, or something about. But I didn't find anything about.

Any

8
0 854
Article Ben Spead · Sep 12, 2017 1m read

The Widgets Direct sample application highlights many aspects of how to use InterSystems technologies to build a modern web application.  Features include:

  • Angular Material + AngularJS + JSON + REST based interactive application with Step by Step instructions on how it was built
  • Example scripts for server-side source control configuration with Perforce
  • %UnitTest logic for automated regression testing
  • %Installer class for automated instance installation from source control 
  • Scripts for Continuous Integration (CI) with Jenkins
  • Docker Manifest for automated provisioning of an instance

We

5
0 1580
Question Ivan Novo · Feb 28, 2019

Hi Dev Community,

My team is currently working on a project where we need to post pdf documents to a 3rd party REST API.

The API specifies a field in the JSON request message to contain the 'physical content' of the file as an array of bytes, example of the JSON request as follows - data truncated for readability purposes:

{
    "CaptureSource":2,
    "RecipientID":"ID34",
    "Document": {
        "Guid":"5D847A4E9CC1485382DC4A5F5DC80D6C",
        "EventDate":"2019-01-14T13:23:46",
        "FileExtension":"pdf",
        "FileContent":"JVBERi0xLjQNCiXi48/TDQoxIDAgb2JqDQogIDw8DQogICA......"

      },
    "A

3
1 1115
Question John Kumpf · Apr 12, 2019

Referencing this post:

https://community.intersystems.com/post/producing-json-sql

I'm not sure how to actually interact with the result set I get from doing something like this.  I want to return something like:

[{"field1":1, "field2":2}, {"field1":2, "field2":10}]

I'm finding it very difficult to get it in this format, since %Print appends a newline onto the end of the {} object it prints.

Here's the closest I've gotten:

set query = "select JSON_OBJECT('field1': field1, 'field2":field2) from MyTable where x=? and y=?"

    set tStatement = ##class(%SQL.Statement).%New()
    set qStatus =

5
3 1483
Question Jack Smith · May 19, 2019

We have a business service that extends Ens.BusinessService and uses  EnsLib.File.InboundAdapter.

This service polls for json files in a folder.

Method signature is like this:

Method OnProcessInput(pInput As %FileCharacterStream, pOutput As %RegisteredObject) As %Status

And inside that method it tries to read the content like this:

set tData = pInput.ReadLine(,.tStatus, .tEOL)
if ($$$ISERR(tStatus)) quit
set tJSON = {}.%FromJSON(tData)
 

I added some trace calls before and after lines and noticed it's always that last line that fails if content is larger than 32kb.

Any workaround for this?

7
0 590
Question Julie Marulappa · Apr 18, 2019

I am still new to cache objectscript and am trying to figure out how I would go about removing the escape characters from my JSON below. When I call the $toJSON method it's adding the "\" character in the file path.

{"FileStatus":"P","Path":"\/somepath\/test\/test123\/filename.txt","InterchangeOID":"100458"}

My Code:

set tJSONFile = {"FileStatus":pRequest.FileStatus,"Path":pRequest.Path,"InterchangeOID":pRequest.InterchangeOID}

set tJSONFile = tJSONFile.$toJSON()

Thanks.

11
0 10903
Question Giray Ozel · Mar 25, 2019

I have two classes:

Class Example.Parent Extends %Persistent{Property Name As %String;Property Description As %String;

Property Children as list of Example.Child;

}
Class Example.Child Extends %Persistent{Property Name As %String;Property Description As %String;

}

 

A parent can have many children. I want to query for parents and add children for each parent to my result.

Here is the code that I query with:

Class Example.QueryParents [ Abstract ]{ClassMethod QueryParents() As %String{    Set query = "SELECT %ID ID, Name, Description FROM Example.Parent"
7
0 1209
Question Markus Neumann · Mar 31, 2019

Dear Colleagues and Friends,

is there any indication that the .NET object representation of Cache objects (i.e. InterSystems.Data.CacheClient.dll) complies with .NET Standard? I'm planning to extend our existing .NET client/server solution with a mobile option by Xamarin Forms and can't find any significant hints in the internet.

I'm just fooling around a bit and made some expreiments with a REST API and a generic object-to-JSON tier:

ClassMethod ObjectFromObject(As %RegisteredObject, class As %String = "", package As %String = "") As %DynamicObject
{
class = "" class = o.%ClassName()
pack

1
0 427
Question Geir Selvåg · Mar 7, 2019

Hello folks,

I have an JSON object that need to be updated before being parsed into a JSX component.

Source JSON obj:

var Obj = { "data": [
  {"id":1, "text":"Task #1", "project":"10", "sub_project":"10-1" },
  {"id":2, "text":"Task #2", "project":"10", "sub_project":"10-1" },
  {"id":3, "text":"Task #3", "project":"11", "sub_project":"11-1" },
]};

 

Required JSON obj result:

var Obj = { "data": [

  {"id":10, "text":"Project 10" },
  {"id":11, "text":"Project 11" },

  {"id":10-1, "text":"Sub Project 10-1", "project":"10" },
  {"id":11-1, "text":"Sub Project 11-1", "project":"11" },
1
0 478
Article Nikita Savchenko · Feb 12, 2019 13m read

ˮ This is one of my articles which was never published in English. Let's fix it!

Hello! This article is about quite a practical way of developing InterSystems solutions without using the integrated tools like Studio or Atelier. All the code of the project can be stored in the form of "traditional" source code files, edited in your favorite development environment (for example, Visual Studio Code), indexed by any version control system and arbitrarily combined with many external tools for code analysis, preprocessing, packaging and so on.

The approach described in this article is suitable for

6
6 3238
Question Token Ibragimov · Feb 22, 2019

Hello,

I'm trying to convert JSON response to object in cache 2010.

My Code is bellow:

set sc = ##class(%ZEN.Auxiliary.jsonProvider).%ParseJSON(resptext,,.pObject,1)

my JSON response

{"access_token":"DSAFFDSGFDGTRHTRHTRH","in":"2522","refresh":"","scope":"send","token_type":"Bearer"}

the result : "9@%ZEN.proxyObject" 

6
0 742
Question Manikandasubramani S · Feb 12, 2019

Hi All,

I am trying to get JSON data from a REST api.  I am using my web browser to get the data by hitting the URL.

The data is receiving properly, but the JSON contains a few HTML tags.

These tags are not not receiving in the browser while hitting the url. Is there any way to overcome this issue ?

Thanks,

2
1 579
Question Rubens Silva · Aug 9, 2017

Hello.
I just noticed that whenever I parse a JSON using %FromJSON, it always return the property values as primary data types, including long strings.

I did a quick stress test to measure it's capabilities and found out that characteristic,  this is something I needed to figure out beforehand  to implement my REST lib.
What I concluded is that %Dynamic depends solely on volatile storage? What if the user doesn't have long string support enabled or if the server has not enough memory to handle long strings?
Is there a fallback for handling it?
Please note that is an extreme and unusual use case,

8
2 3166
Question Ting Wang · Dec 10, 2018

I created the Process to extract the required data from ADT message to a Dynamic Object. I wanted to send the JSON stream to EnsLib.File.PassthroughOperation operation and generate a file with the content of JSON stream.

Here are the codes for Process:

set oMetadata = ... /// metadata is from ADT message which is dynamic object

set jsonRequest = ##class(%ZEN.Auxiliary.jsonProvider).%ObjectToJSON(oMetadata)
set tSC = ..SendRequestAsync(..JSONOperation,jsonRequest,0,,..MetadataContext)  /// send the jsonRequest to operation

Here are the errors in the operation: "ERROR <Ens>ErrGeneral: No MessageBody

8
0 1299