Используйте Jackson для обработки XML атрибутов и форматирования Json массивов - PullRequest
0 голосов
/ 27 мая 2020

В настоящее время я использую вход XML и использую Джексон для преобразования его в выход json. Представлены две проблемы. Одна часть xml содержит атрибут, который переводится неправильно. Другая часть xml должна быть массивом в формате json. Что я могу добавить в свой существующий код, чтобы справиться с этим?

Что у меня:

InputStream inputStream;
        XmlMapper mapper = new XmlMapper();
        Map entries;
        try {
            entries = mapper.readValue(new File("file"),
                    LinkedHashMap.class);
            System.out.println("Entries: " + entries);
            ObjectMapper jsonMapper = new ObjectMapper();
            jsonMapper.enable(SerializationFeature.INDENT_OUTPUT);
            json = jsonMapper.writer().writeValueAsString(entries);
            System.out.println(json);
            //return json;
            return json;

XML:

             <SctiesQtyOrInstdAmt>
                    <SctiesQty>
                        <CondlQty>
                                <FaceAmt>499999999.50000</FaceAmt> 
                        </CondlQty>
                        <InstdQty>
                            <Qty>
                                <FaceAmt>20000</FaceAmt>
                            </Qty>
                        </InstdQty>
                    </SctiesQty>
                </SctiesQtyOrInstdAmt>
                 <PricDtls>
                    <GncCshPricRcvdPerPdct>
                        <AmtPric>
                        <AmtPricTp>ACTU</AmtPricTp> 
                        <PricVal Ccy="AAA">4.5000000000000</PricVal> 
                        </AmtPric>
                    </GncCshPricRcvdPerPdct>
                 </PricDtls> 
                <ShrhldrNb>ShrhldrNb0</ShrhldrNb> 
                <AddtlInf>
                    <InstrAddtlInf>12345</InstrAddtlInf>
                    <InstrAddtlInf>12346</InstrAddtlInf>   
                </AddtlInf>
                </CorpActnInstr>
            <SplmtryData>
                <Envlp>
                    <Document>
                        <DTCCCAINSD1>
                            <ReorgInstrDtls>
                            <PlcAndNm>PlcAndNm0</PlcAndNm> 
                              <TxSeq>
                                <TxSeqNb>0</TxSeqNb> 
                                <InstrQty>
                                <Unit>0.0000000000000</Unit> 
                                 </InstrQty>
                                <OvrsbcptQty>
                                <Unit>0.0000000000000</Unit>
                                </OvrsbcptQty>
                                 <CstmrRefId>CstmrRefId0</CstmrRefId>  
                            </TxSeq>
                            <TtlOvrsbcptQty>
                                <Unit>0.0000000000000</Unit>  
                            </TtlOvrsbcptQty> 

JSON Вывод:

"SctiesQtyOrInstdAmt" : {
              "SctiesQty" : {
                "CondlQty" : {
                  "FaceAmt" : "499999999.50000"
                },
                "InstdQty" : {
                  "Qty" : {
                    "FaceAmt" : "20000"
                  }
                }
              }
            },
            "PricDtls" : {
              "GncCshPricRcvdPerPdct" : {
                "AmtPric" : {
                  "AmtPricTp" : "ACTU",
                  **"PricVal" : {
                    "Ccy" : "AAA",
                    "" : "4.5000000000000"**
                  }
                }
              }
            },
            "ShrhldrNb" : "ShrhldrNb0",
            "AddtlInf" : {
              "InstrAddtlInf" : "12346"
            }
          },
          "SplmtryData" : {
            "Envlp" : {
              "Document" : {
                "DTCCCAINSD1" : {
                  "ReorgInstrDtls" : {
                    "PlcAndNm" : "PlcAndNm0",
                    **"TxSeq" : {
                      "TxSeqNb" : "0",
                      "InstrQty" : {
                        "Unit" : "0.0000000000000"
                      },
                      "OvrsbcptQty" : {
                        "Unit" : "0.0000000000000"
                      },
                      "CstmrRefId" : "CstmrRefId0"
                    },
                    "TtlOvrsbcptQty" : {
                      "Unit" : "0.0000000000000"
                    }**

Желаемый JSON Выход:

"SctiesQtyOrInstdAmt" : {
              "SctiesQty" : {
                "CondlQty" : {
                  "FaceAmt" : "499999999.50000"
                },
                "InstdQty" : {
                  "Qty" : {
                    "FaceAmt" : "20000"
                  }
                }
              }
            },
            "PricDtls" : {
              "GncCshPricRcvdPerPdct" : {
                "AmtPric" : {
                  "AmtPricTp" : "ACTU",
                  **"PricVal" : {
                    "Ccy" : "AAA",
                    "value" : "4.5000000000000"**
                  }
                }
              }
            },
            "ShrhldrNb" : "ShrhldrNb0",
            "AddtlInf" : {
              "InstrAddtlInf" : "12346"
            }
          },
          "SplmtryData" : {
            "Envlp" : {
              "Document" : {
                "DTCCCAINSD1" : {
                  "ReorgInstrDtls" : {
                    "PlcAndNm" : "PlcAndNm0",
                    **"TxSeq" :[ {
                      "TxSeqNb" : "0",
                      "InstrQty" : {
                        "Unit" : "0.0000000000000"
                      },
                      "OvrsbcptQty" : {
                        "Unit" : "0.0000000000000"
                      },
                      "CstmrRefId" : "CstmrRefId0"
                    }
                    ],
                    "TtlOvrsbcptQty" : {
                      "Unit" : "0.0000000000000"
                    }**
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...