Как динамически создавать элементы в DynamoDB для чтения объектов из файла JSON с использованием Java - PullRequest
0 голосов
/ 01 июня 2018

Мое требование - прочитать данные из файла json и создать элементы в DynamoDB с объектами, присутствующими в DynamoDB, например, рассмотрим следующий файл

{
    "ISA": {
        "isa01_name": "00",
        "isa02": "          ",
        "isa03": "00",
        "isa04": "          ",
        "isa05": "ZZ",
        "isa06": "CLEARCUT       ",
        "isa07": "ZZ",
        "isa08": "CMSENCOUNTERCTR",
        "isa09": "120109",
        "isa10": "1530",
        "isa11": "U",
        "isa12": "00501",
        "isa13": "012412627",
        "isa14": "0",
        "isa15": "T",
        "isa16": ":"
    },
    "GS": {
        "gs02": "352091331",
        "gs04": "20170109",
        "gs06": "146823",
        "gs03": "00580",
        "gs05": "1530",
        "gs01": "HC",
        "gs08": "005010X222A1",
        "gs07": "X"
    },
    "ST": {
        "ST03_1705_Implementation Convention Reference": "005010X222A1",
        "ST01_143_Transaction Set Identifier Code": "837",
        "ST02_329_Transaction Set Control Number": "50138"
    }
}

, когда я читаю этот файл, он должен создатьISA, GS, ST элементы в базе данных Dynamodb.Опять же, если читать другой файл с другими объектами, то для них также должны быть созданы элементы.

ниже приведен код, который у меня сейчас есть.

`import java.io.File;
 import java.util.Iterator;
 import com.amazonaws.client.builder.AwsClientBuilder;
 import com.amazonaws.services.dynamodbv2.AmazonDynamoDB;
 import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder;
 import com.amazonaws.services.dynamodbv2.document.DynamoDB; 
 import com.amazonaws.services.dynamodbv2.document.Item;
 import com.amazonaws.services.dynamodbv2.document.Table; 
 import com.fasterxml.jackson.core.JsonFactory;
 import com.fasterxml.jackson.core.JsonParser;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ObjectNode;

  public class LoadData {


public static void main(String ards[]) throws Exception {

    AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard()
        .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("http://localhost:8000", "us-west-2"))
        .build();

    DynamoDB dynamoDB = new DynamoDB(client);

    Table table = dynamoDB.getTable("NewTable");


    JsonParser parser = new JsonFactory().createParser(new File("C:\\Users\\Nikhil yadav\\Downloads\\healthclaims\\healthclaims\\src\\main\\resources\\output\\ValidJson.json"));

    JsonNode rootNode = new ObjectMapper().readTree(parser);
    Iterator<JsonNode> iter = rootNode.iterator();

    ObjectNode currentNode;

    while (iter.hasNext()) {
        currentNode = (ObjectNode) iter.next();


        try {
            table.putItem(new Item().withPrimaryKey("ISA", currentNode.path("ISA").toString().replaceAll("[^:a-zA-Z0-9_-|]", " "))
                    .withString("GS",currentNode.path("GS").toString().replaceAll("[^:a-zA-Z0-9_-|]", " "))
                    .withString("ST", currentNode.path("ST").toString().replaceAll("[^:a-zA-Z0-9_-|]", " "))


                    );
            System.out.println("PutItem succeeded: ");

        }
        catch (Exception e) {

            System.err.println("Unable to add : ");
            System.err.println(e.getMessage());
            break;
        }
    }
    parser.close();
}
}
 `

он будет принимать только файлы с объектами ISA, GS и ST, но я хочу программу, которая принимает все типы объектов jsonфайлы.

Я надеюсь, что мой вопрос ясен.я новичок в публикации вопросов, пожалуйста, игнорируйте, если это не ясно.

...