javascript - 用于读取 json 输入并映射到 json 输出的 javascript 代码
问题描述
我有以下脚本并在 nifi 设置中使用它,但最好提出与 javascript 本身相关的问题。我想读取 json 输入并将其映射到特定的输出格式。json 本身可能包含不同的字段,因此它必须以通用方式读取 json,然后根据输入字段映射到输出 json。
var IOUtils = Java.type("org.apache.commons.io.IOUtils");
var StandardCharsets = Java.type("java.nio.charset.StandardCharsets");
var transformed_message = {};
var error = false;
var measurement = "test_measurement";
var sep = "\n"
// Get attributes
flowFile = session.write(flowFile, new StreamCallback(function
(inputStream,
outputStream) {
// Read input FlowFile content
var type = flowFile.getAttribute('type')
var time = Number(flowFile.getAttribute('filename'))
var meta_name = flowFile.getAttribute('meta_name')
var remote_source_name =
flowFile.getAttribute('gethttp.remote.source')
var content = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
//
message or content
var message_content = {};
try {
message_content = JSON.parse(content);
transformed_message.state = (((message_content || {}).state ||
"null"));
transformed_message.new_records = (((message_content ||
{}).new_records || 0));
transformed_message.updated_records = (((message_content ||
{}).updated_records || 0));
transformed_message.changed_records = (((message_content ||
{}).changed_records || 0));
transformed_message.deleted_records = (((message_content ||
{}).deleted_records || 0));
transformed_message.missing_records = (((message_content ||
{}).missing_records || 0));
line = line + ",remote_source_name="+ remote_source_name + ",meta_name="+meta_name+",message_type=" + type + " "
+ "new_records=" + transformed_message.new_records + ","
+ "updated_records=" + transformed_message.updated_records + ","
+ "changed_records=" + transformed_message.changed_records + ","
+ "deleted_records=" + transformed_message.deleted_records + ","
+ "missing_records=" + transformed_message.missing_records + " "
+ time * 1000000 + sep;
// Write output content
if (transformed_message) {
outputStream.write(line.getBytes(StandardCharsets.UTF_8));
}
所以在这个脚本中它读取一个 json 数组并解析已知的预期属性或字段。javascript中有没有办法只读取所有字段或json对象,然后根据读取的输入字段的数量创建预期的json?我们现在可以将类型保留为字符串,将格式保留为 json 对象,然后添加代码来检查是数组还是对象。希望这对我正在尝试做的事情有意义。
解决方案
推荐阅读
- r - 从 shell 获取时,仅从 RScript 中返回一个值
- vue.js - 如何为 VueJs Props 添加多种数据类型?
- activemq - MQ 连接池给出错误“此会话已关闭”。
- nutch - nutch如何配置为只抓取网站中更新的页面
- python - 使用python提取关键字匹配的句子的索引
- python - 在 for 循环中对特定索引进行计算
- javascript - 无法在js中设置未定义的属性'boxShadow' - 样式
- reactjs - React TypeError:无法读取未定义的属性“推送”
- java - 线程“主”java.lang.ArrayIndexOutOfBoundsException 中的异常:索引 1 超出长度 0 的范围
- list - 如何在共享点列表中向用户授予查看级别权限