JSONStreamingBuilder - com escopo
Crie um objeto de construtor usado para criar uma grande carga de fluxo JSON para usar em uma solicitação REST ou SOAP para enviar dados em massa para uma API de terceiros. Você também pode criar a carga como uma cadeia de caracteres JSON para uma opção sem fluxo.
Use esses métodos na etapa de script Workflow Studio com o identificador de namespace sn_ih. Por exemplo, você pode usar esta API para criar uma carga JSON na etapa de script Workflow Studio e passar o valor retornado para a etapa REST para enviar a solicitação a um serviço de terceiros. Para obter mais informações, consulte a Workflow Studio etapa Script.
Você só pode usar esta API no ambiente Workflow Studio.
Ordem de chamada de API
Gere cargas JSON usando essas APIs na seguinte ordem:
- JSONStreamingBuilder: cria um objeto de construtor
- Use esses métodos na seguinte ordem para criar um objeto de construtor:
- JSONStreamingBuilder(): Instancia o objeto JSONStreamingBuilder.
- withAttachment(): opcional. Cria o objeto JSON como um anexo de streaming e o armazena na tabela Anexos de streaming [streaming_attachment]. Se você não chamar este método, a API criará a carga como uma cadeia de caracteres JSON.
- expiresAt(): opcional. Define uma hora em que o anexo expira. Também deve chamar o método withAttachment().
- build(): retorna um objeto JSONStreamingAPI.
- JSONStreamingAPI: cria a carga JSON
- Use esses métodos na seguinte ordem para criar a carga JSON:
- startObject(): cria o objeto JSON primário.
- Métodos para gerar os pares de chave-valor JSON, como writeFieldName(), writeString()e writeNumberField().
- endObject(): fecha o objeto JSON primário.
- getJSONString() ou getAttachmentId(): retorna a cadeia de caracteres JSON ou o ID de anexo que você criou.
- close(): fecha o objeto JSONStreamingAPI.
Limites de tamanho
As cargas geradas por meio desta API não podem exceder estes limites de tamanho:
- Anexos: 200 MB
- Cadeias de caracteres: 5 MB
Exemplos
Este exemplo mostra como criar um objeto JSON e armazená-lo na tabela Anexo [sys_attachment] com uma data de expiração definida.
try {
var ttl = new GlideDateTime("2011-01-01 12:00:00");
var builder = new sn_ih.JSONStreamingBuilder()
.withAttachment() // Creates the JSON object in streaming mode within an attachment.
.expiresAt(ttl) // Sets an expiration date for the attachment.
.build(); // Creates the JSONStreamingAPI object.
builder.startObject() // Begins generating the JSON object.
.writeFieldName("firstName") // Adds a "firstName" field
.writeString("John") // Writes the value of the "firstName" field
.writeFieldName("lastName")
.writeString("Smith")
.writeNumberField("age","25") // Write a number field named "age" with value "25"
.writeFieldName("address")
.startObject() // Start a new object nested under the parent object
.writeStringField("streetAddress", "21 2nd Street")
.writeStringField("city", "Santa Clara")
.writeStringField("state", "CA")
.writeStringField("postalCode", "11111")
.endObject()
.writeFieldName("phoneNumber")
.startArray() // Start an array
.startObject() // Add the first object to the array
.writeFieldName("type")
.writeString("home")
.writeFieldName("number")
.writeString("212 555-1234")
.endObject()
.startObject() // Add another object to the array
.writeFieldName("type")
.writeString("fax")
.writeFieldName("number")
.writeString("646 555-4567")
.endObject()
.endArray()
.endObject()
gs.log(builder.getAttachmentId()); // Returns the sys_id of the attachment.
}
catch (err) {
gs.log(err);
}
finally {
builder.close();
}Como alternativa, este exemplo mostra como usar a API na etapa Script e criar a carga como uma cadeia de caracteres JSON. Você pode usar esta opção para criar cargas com menos de 5 MB.
(function execute(inputs, outputs) {
var builder = new sn_ih.JSONStreamingBuilder().build();
builder.startObject()
.enablePrettyPrint()
.writeTextElement("firstName","John")
.writeString("John")
.writeFieldName("lastName")
.writeString("Smith")
.writeNumberField("age","25")
.writeFieldName("address")
.startObject()
.writeStringField("streetAddress", "21 2nd Street")
.writeStringField("city", "Santa Clara")
.writeStringField("state", "CA")
.writeStringField("postalCode", "11111")
.endObject()
.writeFieldName("phoneNumber")
.startArray()
.startObject()
.writeFieldName("type")
.writeString("home")
.writeFieldName("number")
.writeString("212 555-1234")
.endObject()
.startObject()
.writeFieldName("type")
.writeString("fax")
.writeFieldName("number")
.writeString("646 555-4567")
.endObject()
.endArray()
.endObject()
outputs.payload = builder.getJSONString();
})(inputs, outputs);Saída:
{
"firstName" : "John",
"lastName" : "Smith",
"age" : 25,
"address" : {
"streetAddress" : "21 2nd Street",
"city" : "Santa Clara",
"state" : "CA",
"postalCode" : "11111"
},
"phoneNumber" : [ {
"type" : "home",
"number" : "212 555-1234"
}, {
"type" : "fax",
"number" : "646 555-4567"
} ]
}JSONStreamingBuilder - JSONStreamingBuilder()
Instancia o objeto JSONStreamingBuilder.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
var builder = new sn_ih.JSONStreamingBuilder()
JSONStreamingBuilder - build()
retorna um objeto JSONStreamingAPI.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| JSONStreamingAPI | Objeto JSON de fluxo usado para construir a carga útil. |
Este exemplo mostra como criar um objeto JSON e armazená-lo na tabela Anexo [sys_attachment] com uma data de expiração definida.
try {
var ttl = new GlideDateTime("2011-01-01 12:00:00");
var builder = new sn_ih.JSONStreamingBuilder()
.withAttachment() // Creates the JSON object in streaming mode within an attachment.
.expiresAt(ttl) // Sets an expiration date for the attachment.
.build(); // Creates the JSONStreamingAPI object.
builder.startObject() // Begins generating the JSON object.
.writeFieldName("firstName") // Adds a "firstName" field
.writeString("John") // Writes the value of the "firstName" field
.writeFieldName("lastName")
.writeString("Smith")
.writeNumberField("age","25") // Write a number field named "age" with value "25"
.writeFieldName("address")
.startObject() // Start a new object nested under the parent object
.writeStringField("streetAddress", "21 2nd Street")
.writeStringField("city", "Santa Clara")
.writeStringField("state", "CA")
.writeStringField("postalCode", "11111")
.endObject()
.writeFieldName("phoneNumber")
.startArray() // Start an array
.startObject() // Add the first object to the array
.writeFieldName("type")
.writeString("home")
.writeFieldName("number")
.writeString("212 555-1234")
.endObject()
.startObject() // Add another object to the array
.writeFieldName("type")
.writeString("fax")
.writeFieldName("number")
.writeString("646 555-4567")
.endObject()
.endArray()
.endObject()
gs.log(builder.getAttachmentId()); // Returns the sys_id of the attachment.
}
catch (err) {
gs.log(err);
}
finally {
builder.close();
}
JSONStreamingBuilder - expiresAt(Object expiresAt)
Define uma hora em que o anexo expira. Também deve chamar o método withAttachment(). Se você não chamar este método, o anexo expirará duas horas a partir da hora em que o anexo for criado.
| Nome | Tipo | Descrição |
|---|---|---|
| expira em | GlideDateTime | Objeto que é definido quando o anexo expira.
|
| Tipo | Descrição |
|---|---|
| JSONStreamingBuilder | Objeto de construtor usado para iniciar a carga JSON. |
Este exemplo mostra como criar um objeto JSON e armazená-lo na tabela Anexo [sys_attachment] com uma data de expiração definida.
try {
var ttl = new GlideDateTime("2011-01-01 12:00:00");
var builder = new sn_ih.JSONStreamingBuilder()
.withAttachment() // Creates the JSON object in streaming mode within an attachment.
.expiresAt(ttl) // Sets an expiration date for the attachment.
.build(); // Creates the JSONStreamingAPI object.
builder.startObject() // Begins generating the JSON object.
.writeFieldName("firstName") // Adds a "firstName" field
.writeString("John") // Writes the value of the "firstName" field
.writeFieldName("lastName")
.writeString("Smith")
.writeNumberField("age","25") // Write a number field named "age" with value "25"
.writeFieldName("address")
.startObject() // Start a new object nested under the parent object
.writeStringField("streetAddress", "21 2nd Street")
.writeStringField("city", "Santa Clara")
.writeStringField("state", "CA")
.writeStringField("postalCode", "11111")
.endObject()
.writeFieldName("phoneNumber")
.startArray() // Start an array
.startObject() // Add the first object to the array
.writeFieldName("type")
.writeString("home")
.writeFieldName("number")
.writeString("212 555-1234")
.endObject()
.startObject() // Add another object to the array
.writeFieldName("type")
.writeString("fax")
.writeFieldName("number")
.writeString("646 555-4567")
.endObject()
.endArray()
.endObject()
gs.log(builder.getAttachmentId()); // Returns the sys_id of the attachment.
}
catch (err) {
gs.log(err);
}
finally {
builder.close();
}
JSONStreamingBuilder - withAttachment()
Cria o objeto JSON como um anexo de streaming e o armazena na tabela Anexos de streaming [streaming_attachment]. Se você não chamar este método, a API criará a carga como uma cadeia de caracteres JSON.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| JSONStreamingBuilder | Objeto de construtor usado para iniciar a carga JSON. |
Este exemplo mostra como criar a carga JSON e salvá-la como um anexo.
try {
var ttl = new GlideDateTime("2011-01-01 12:00:00");
var builder = new sn_ih.JSONStreamingBuilder()
.withAttachment() // Creates the JSON object in streaming mode within an attachment.
.expiresAt(ttl) // Sets an expiration date for the attachment.
.build(); // Creates the JSONStreamingAPI object.
builder.startObject() // Begins generating the JSON object.
.writeFieldName("firstName") // Adds a "firstName" field
.writeString("John") // Writes the value of the "firstName" field
.writeFieldName("lastName")
.writeString("Smith")
.writeNumberField("age","25") // Write a number field named "age" with value "25"
.writeFieldName("address")
.startObject() // Start a new object nested under the parent object
.writeStringField("streetAddress", "21 2nd Street")
.writeStringField("city", "Santa Clara")
.writeStringField("state", "CA")
.writeStringField("postalCode", "11111")
.endObject()
.writeFieldName("phoneNumber")
.startArray() // Start an array
.startObject() // Add the first object to the array
.writeFieldName("type")
.writeString("home")
.writeFieldName("number")
.writeString("212 555-1234")
.endObject()
.startObject() // Add another object to the array
.writeFieldName("type")
.writeString("fax")
.writeFieldName("number")
.writeString("646 555-4567")
.endObject()
.endArray()
.endObject()
gs.log(builder.getAttachmentId()); // Returns the sys_id of the attachment.
}
catch (err) {
gs.log(err);
}
finally {
builder.close();
}
Este exemplo mostra como criar a carga JSON e salvá-la como uma cadeia de caracteres.
try {
var builder = new sn_ih.JSONStreamingBuilder().build();
builder.startObject()
.writeFieldName("firstName")
.writeString("John")
.writeFieldName("lastName")
.writeString("Smith")
.writeNumberField("age","25")
.writeFieldName("address")
.startObject()
.writeStringField("streetAddress", "21 2nd Street")
.writeStringField("city", "Santa Clara")
.writeStringField("state", "CA")
.writeStringField("postalCode", "11111")
.endObject()
.writeFieldName("phoneNumber")
.startArray()
.startObject()
.writeFieldName("type")
.writeString("home")
.writeFieldName("number")
.writeString("212 555-1234")
.endObject()
.startObject()
.writeFieldName("type")
.writeString("fax")
.writeFieldName("number")
.writeString("646 555-4567")
.endObject()
.endArray()
.endObject()
gs.log(builder.getJSONString());
}
catch (err) {
gs.log("Exception: " + err);
}
finally {
builder.close();
}
{
"firstName" : "John",
"lastName" : "Smith",
"age" : 25,
"address" : {
"streetAddress" : "21 2nd Street",
"city" : "Santa Clara",
"state" : "CA",
"postalCode" : "11111"
},
"phoneNumber" : [ {
"type" : "home",
"number" : "212 555-1234"
}, {
"type" : "fax",
"number" : "646 555-4567"
} ]
}