我在使用XSLT将XML转换为JSON时遇到问题,我在转换它时遇到了问题。
这是我提供的XML输入:
<ArrayOfApiInvoiceReport>
<ApiInvoiceReport>
<BillingAddress1>717 N. ATLANTIC AVE</BillingAddress1>
<BillingCity>DAYTONA BEACH</BillingCity>
<BillingCountry>US</BillingCountry>
<BillingCustomerCode>3001518</BillingCustomerCode>
<BillingCustomerName>MAUI NIX - DAYTONA BEACH</BillingCustomerName>
<BillingState>FL</BillingState>
<BillingTelephone>32118</BillingTelephone>
<DivisionCode>09</DivisionCode>
<FreightAmount>86.52</FreightAmount>
<InvoiceAmount>1041.96</InvoiceAmount>
<InvoiceCreatedDate>2016-06-18</InvoiceCreatedDate>
<InvoiceItems>
<ColorCode>BLK</ColorCode>
<GenderCode>M</GenderCode>
<InvoiceItemSizes>
<InvoiceLineNumber>1000</InvoiceLineNumber>
<InvoiceNumber>1011063022016</InvoiceNumber>
<InvoicedQuantity>12</InvoicedQuantity>
<SizeCode>1SZ</SizeCode>
<SizeInvoicedPrice>24.52</SizeInvoicedPrice>
<UPC>BBPKC1</UPC>
</InvoiceItemSizes>
<InvoiceLineNumber>1000</InvoiceLineNumber>
<InvoiceNumber>1011063022016</InvoiceNumber>
<InvoicedQuantity>12</InvoicedQuantity>
<ProductInvoicedPrice>294.24</ProductInvoicedPrice>
<ProductName>OVERTIME RIPSTOP HTR</ProductName>
<ProductNumber>BBPKC1BLK1SZ</ProductNumber>
<SeasonCode>USF16</SeasonCode>
</InvoiceItems>
<InvoiceItems>
<ColorCode>BLU</ColorCode>
<GenderCode>M</GenderCode>
<InvoiceItemSizes>
<InvoiceLineNumber>2000</InvoiceLineNumber>
<InvoiceNumber>1011063022016</InvoiceNumber>
<InvoicedQuantity>12</InvoicedQuantity>
<SizeCode>1SZ</SizeCode>
<SizeInvoicedPrice>20.02</SizeInvoicedPrice>
<UPC>BBPKL2</UPC>
</InvoiceItemSizes>
<InvoiceLineNumber>2000</InvoiceLineNumber>
<InvoiceNumber>1011063022016</InvoiceNumber>
<InvoicedQuantity>12</InvoicedQuantity>
<ProductInvoicedPrice>240.24</ProductInvoicedPrice>
<ProductName>CORE MEDINA</ProductName>
<ProductNumber>BBPKL2BLU1SZ</ProductNumber>
<SeasonCode>USF16</SeasonCode>
</InvoiceItems>
<InvoiceItems>
<ColorCode>BRN</ColorCode>
<GenderCode>M</GenderCode>
<InvoiceItemSizes>
<InvoiceLineNumber>3000</InvoiceLineNumber>
<InvoiceNumber>1011063022016</InvoiceNumber>
<InvoicedQuantity>24</InvoicedQuantity>
<SizeCode>1SZ</SizeCode>
<SizeInvoicedPrice>8.77</SizeInvoicedPrice>
<UPC>BWUFX3</UPC>
</InvoiceItemSizes>
<InvoiceLineNumber>3000</InvoiceLineNumber>
<InvoiceNumber>1011063022016</InvoiceNumber>
<InvoicedQuantity>24</InvoicedQuantity>
<ProductInvoicedPrice>210.48</ProductInvoicedPrice>
<ProductName>RIPPER BLOCK ALL DAY ZF</ProductName>
<ProductNumber>BWUFX3BRN1SZ</ProductNumber>
<SeasonCode>USF16</SeasonCode>
</InvoiceItems>
<InvoiceItems>
<ColorCode>BLK</ColorCode>
<GenderCode>M</GenderCode>
<InvoiceItemSizes>
<InvoiceLineNumber>4000</InvoiceLineNumber>
<InvoiceNumber>1011063022016</InvoiceNumber>
<InvoicedQuantity>24</InvoicedQuantity>
<SizeCode>1SZ</SizeCode>
<SizeInvoicedPrice>8.77</SizeInvoicedPrice>
<UPC>BWUFX3</UPC>
</InvoiceItemSizes>
<InvoiceLineNumber>4000</InvoiceLineNumber>
<InvoiceNumber>1011063022016</InvoiceNumber>
<InvoicedQuantity>24</InvoicedQuantity>
<ProductInvoicedPrice>210.48</ProductInvoicedPrice>
<ProductName>RIPPER BLOCK ALL DAY ZF</ProductName>
<ProductNumber>BWUFX3BLK1SZ</ProductNumber>
<SeasonCode>USF16</SeasonCode>
</InvoiceItems>
<InvoiceNumber>1011063022016</InvoiceNumber>
<InvoiceSentDate>2016-06-18</InvoiceSentDate>
<InvoiceStatus>95</InvoiceStatus>
<InvoiceTotalQuantity>72.000000</InvoiceTotalQuantity>
<OrderNumber>0011353030</OrderNumber>
<PurchaseOrder>099THRCBAG160615</PurchaseOrder>
<SalesPersonCode>3310</SalesPersonCode>
<SeasonCode>USF16</SeasonCode>
<ShippingAddress1>717 N. ATLANTIC AVE</ShippingAddress1>
<ShippingCity>DAYTONA BEACH</ShippingCity>
<ShippingCountry>US</ShippingCountry>
<ShippingCustomerCode>3001518</ShippingCustomerCode>
<ShippingCustomerName>MAUI NIX - DAYTONA BEACH</ShippingCustomerName>
<ShippingMethodCode>006</ShippingMethodCode>
<ShippingState>FL</ShippingState>
<ShippingTelephone>32118</ShippingTelephone>
<TermsCode>DDP</TermsCode>
<TrackingNumber>0</TrackingNumber>
</ApiInvoiceReport>
这是XSLT,我用来转换
<?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output encoding="utf-8" method="text" omit-xml-declaration="yes"/>
<xsl:variable name="nl">
<xsl:text/>
</xsl:variable>
<xsl:variable name="tb">
<xsl:text/>
</xsl:variable>
<xsl:template match="/*">
<xsl:text>[{</xsl:text>
<xsl:value-of select="$nl"/>
<!-- Process all the child nodes of the root -->
<xsl:apply-templates mode="detect" select="*">
<xsl:with-param name="indent" select="$tb"/>
</xsl:apply-templates>
<!-- Close the root array -->
<xsl:value-of select="$nl"/>
<xsl:text/>
</xsl:template>
<xsl:template match="*" mode="detect">
<xsl:choose>
<xsl:when test="name(preceding-sibling::*[1]) = name(current()) and name(following-sibling::*[1]) != name(current())">
<xsl:apply-templates mode="obj-content" select="."/>
<xsl:text>]</xsl:text>
<xsl:if test="count(following-sibling::*[name() != name(current())]) > 0">, </xsl:if>
</xsl:when>
<xsl:when test="name(preceding-sibling::*[1]) = name(current())">
<xsl:apply-templates mode="obj-content" select="."/>
<xsl:if test="name(following-sibling::*) = name(current())">, </xsl:if>
</xsl:when>
<xsl:when test="following-sibling::*[1][name() = name(current())]">
<xsl:choose>
<xsl:when test="local-name(current()) = 'ApiInvoiceReport'">
<xsl:apply-templates mode="detect" select="*"/>
<xsl:text>}, </xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>"</xsl:text>
<xsl:value-of select="name()"/>
<xsl:text>" : [</xsl:text>
<xsl:apply-templates mode="obj-content" select="."/>
<xsl:text>, </xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="count(./child::*) > 0 or count(@*) > 0">
<xsl:text>"</xsl:text>
<xsl:value-of select="name()"/>" : [<xsl:apply-templates
mode="obj-content" select="."/>
<xsl:if test="count(following-sibling::*) > 0">], </xsl:if>
</xsl:when>
<xsl:when test="count(./child::*) = 0">
<xsl:text>"</xsl:text>
<xsl:value-of select="name()"/>" : "<xsl:apply-templates select="."/>
<xsl:text>"</xsl:text>
<xsl:if test="count(following-sibling::*) > 0">, </xsl:if>
</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template match="*" mode="obj-content">
<xsl:text>{</xsl:text>
<xsl:apply-templates mode="attr" select="@*"/>
<xsl:if test="count(@*) > 0 and (count(child::*) > 0 or text())">, </xsl:if>
<xsl:apply-templates mode="detect" select="./*"/>
<xsl:if test="count(child::*) = 0 and text() and not(@*)">
<xsl:text>"</xsl:text>
<xsl:value-of select="name()"/>" : "<xsl:value-of select="text()"/>
<xsl:text>"</xsl:text>
</xsl:if>
<xsl:if test="count(child::*) = 0 and text() and @*">
<xsl:text>: "</xsl:text>
<xsl:value-of select="text()"/>
<xsl:text>"</xsl:text>
</xsl:if>
<xsl:text>}</xsl:text>
<xsl:if test="position() < last()">, </xsl:if>
</xsl:template>
<xsl:template match="@*" mode="attr">
<xsl:text>"</xsl:text>
<xsl:value-of select="name()"/>" : "<xsl:value-of select="."/>
<xsl:text>"</xsl:text>
<xsl:if test="position() < last()">,</xsl:if>
</xsl:template>
<xsl:template match="node/@TEXT | text()" name="removeBreaks">
<xsl:param name="pText" select="normalize-space(.)"/>
<xsl:choose>
<xsl:when test="not(contains($pText, '
'))">
<xsl:copy-of select="$pText"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat(substring-before($pText, '
'), ' ')"/>
<xsl:call-template name="removeBreaks">
<xsl:with-param name="pText" select="substring-after($pText, '
')"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
我的输出结果如下:
[{"ApiInvoiceReport" : [{"BillingAddress1" : "717 N. ATLANTIC AVE", "BillingCity" : "DAYTONA BEACH", "BillingCountry" : "US", "BillingCustomerCode" : "3001518", "BillingCustomerName" : "MAUI NIX - DAYTONA BEACH", "BillingState" : "FL", "BillingTelephone" : "32118", "DivisionCode" : "09", "FreightAmount" : "86.52", "InvoiceAmount" : "1041.96", "InvoiceCreatedDate" : "2016-06-18", "InvoiceItems" : [{"ColorCode" : "BLK", "GenderCode" : "M", "InvoiceItemSizes" : [{"InvoiceLineNumber" : "1000", "InvoiceNumber" : "1011063022016", "InvoicedQuantity" : "12", "SizeCode" : "1SZ", "SizeInvoicedPrice" : "24.52", "UPC" : "BBPKC1"}], "InvoiceLineNumber" : "1000", "InvoiceNumber" : "1011063022016", "InvoicedQuantity" : "12", "ProductInvoicedPrice" : "294.24", "ProductName" : "OVERTIME RIPSTOP HTR", "ProductNumber" : "BBPKC1BLK1SZ", "SeasonCode" : "USF16"}, {"ColorCode" : "BLU", "GenderCode" : "M", "InvoiceItemSizes" : [{"InvoiceLineNumber" : "2000", "InvoiceNumber" : "1011063022016", "InvoicedQuantity" : "12", "SizeCode" : "1SZ", "SizeInvoicedPrice" : "20.02", "UPC" : "BBPKL2"}], "InvoiceLineNumber" : "2000", "InvoiceNumber" : "1011063022016", "InvoicedQuantity" : "12", "ProductInvoicedPrice" : "240.24", "ProductName" : "CORE MEDINA", "ProductNumber" : "BBPKL2BLU1SZ", "SeasonCode" : "USF16"}, {"ColorCode" : "BRN", "GenderCode" : "M", "InvoiceItemSizes" : [{"InvoiceLineNumber" : "3000", "InvoiceNumber" : "1011063022016", "InvoicedQuantity" : "24", "SizeCode" : "1SZ", "SizeInvoicedPrice" : "8.77", "UPC" : "BWUFX3"}], "InvoiceLineNumber" : "3000", "InvoiceNumber" : "1011063022016", "InvoicedQuantity" : "24", "ProductInvoicedPrice" : "210.48", "ProductName" : "RIPPER BLOCK ALL DAY ZF", "ProductNumber" : "BWUFX3BRN1SZ", "SeasonCode" : "USF16"}, {"ColorCode" : "BLK", "GenderCode" : "M", "InvoiceItemSizes" : [{"InvoiceLineNumber" : "4000", "InvoiceNumber" : "1011063022016", "InvoicedQuantity" : "24", "SizeCode" : "1SZ", "SizeInvoicedPrice" : "8.77", "UPC" : "BWUFX3"}], "InvoiceLineNumber" : "4000", "InvoiceNumber" : "1011063022016", "InvoicedQuantity" : "24", "ProductInvoicedPrice" : "210.48", "ProductName" : "RIPPER BLOCK ALL DAY ZF", "ProductNumber" : "BWUFX3BLK1SZ", "SeasonCode" : "USF16"}], "InvoiceNumber" : "1011063022016", "InvoiceSentDate" : "2016-06-18", "InvoiceStatus" : "95", "InvoiceTotalQuantity" : "72.000000", "OrderNumber" : "0011353030", "PurchaseOrder" : "099THRCBAG160615", "SalesPersonCode" : "3310", "SeasonCode" : "USF16", "ShippingAddress1" : "717 N. ATLANTIC AVE", "ShippingCity" : "DAYTONA BEACH", "ShippingCountry" : "US", "ShippingCustomerCode" : "3001518", "ShippingCustomerName" : "MAUI NIX - DAYTONA BEACH", "ShippingMethodCode" : "006", "ShippingState" : "FL", "ShippingTelephone" : "32118", "TermsCode" : "DDP", "TrackingNumber" : "0"}
我希望看到输出如下:
[{"BillingAddress1" : "717 N. ATLANTIC AVE", "BillingCity" : "DAYTONA BEACH", "BillingCountry" : "US", "BillingCustomerCode" : "3001518", "BillingCustomerName" : "MAUI NIX - DAYTONA BEACH", "BillingState" : "FL", "BillingTelephone" : "32118", "DivisionCode" : "09", "FreightAmount" : "86.52", "InvoiceAmount" : "1041.96", "InvoiceCreatedDate" : "2016-06-18", "InvoiceItems" : [{"ColorCode" : "BLK", "GenderCode" : "M", "InvoiceItemSizes" : [{"InvoiceLineNumber" : "1000", "InvoiceNumber" : "1011063022016", "InvoicedQuantity" : "12", "SizeCode" : "1SZ", "SizeInvoicedPrice" : "24.52", "UPC" : "BBPKC1"}], "InvoiceLineNumber" : "1000", "InvoiceNumber" : "1011063022016", "InvoicedQuantity" : "12", "ProductInvoicedPrice" : "294.24", "ProductName" : "OVERTIME RIPSTOP HTR", "ProductNumber" : "BBPKC1BLK1SZ", "SeasonCode" : "USF16"}, {"ColorCode" : "BLU", "GenderCode" : "M", "InvoiceItemSizes" : [{"InvoiceLineNumber" : "2000", "InvoiceNumber" : "1011063022016", "InvoicedQuantity" : "12", "SizeCode" : "1SZ", "SizeInvoicedPrice" : "20.02", "UPC" : "BBPKL2"}], "InvoiceLineNumber" : "2000", "InvoiceNumber" : "1011063022016", "InvoicedQuantity" : "12", "ProductInvoicedPrice" : "240.24", "ProductName" : "CORE MEDINA", "ProductNumber" : "BBPKL2BLU1SZ", "SeasonCode" : "USF16"}, {"ColorCode" : "BRN", "GenderCode" : "M", "InvoiceItemSizes" : [{"InvoiceLineNumber" : "3000", "InvoiceNumber" : "1011063022016", "InvoicedQuantity" : "24", "SizeCode" : "1SZ", "SizeInvoicedPrice" : "8.77", "UPC" : "BWUFX3"}], "InvoiceLineNumber" : "3000", "InvoiceNumber" : "1011063022016", "InvoicedQuantity" : "24", "ProductInvoicedPrice" : "210.48", "ProductName" : "RIPPER BLOCK ALL DAY ZF", "ProductNumber" : "BWUFX3BRN1SZ", "SeasonCode" : "USF16"}, {"ColorCode" : "BLK", "GenderCode" : "M", "InvoiceItemSizes" : [{"InvoiceLineNumber" : "4000", "InvoiceNumber" : "1011063022016", "InvoicedQuantity" : "24", "SizeCode" : "1SZ", "SizeInvoicedPrice" : "8.77", "UPC" : "BWUFX3"}], "InvoiceLineNumber" : "4000", "InvoiceNumber" : "1011063022016", "InvoicedQuantity" : "24", "ProductInvoicedPrice" : "210.48", "ProductName" : "RIPPER BLOCK ALL DAY ZF", "ProductNumber" : "BWUFX3BLK1SZ", "SeasonCode" : "USF16"}], "InvoiceNumber" : "1011063022016", "InvoiceSentDate" : "2016-06-18", "InvoiceStatus" : "95", "InvoiceTotalQuantity" : "72.000000", "OrderNumber" : "0011353030", "PurchaseOrder" : "099THRCBAG160615", "SalesPersonCode" : "3310", "SeasonCode" : "USF16", "ShippingAddress1" : "717 N. ATLANTIC AVE", "ShippingCity" : "DAYTONA BEACH", "ShippingCountry" : "US", "ShippingCustomerCode" : "3001518", "ShippingCustomerName" : "MAUI NIX - DAYTONA BEACH", "ShippingMethodCode" : "006", "ShippingState" : "FL", "ShippingTelephone" : "32118", "TermsCode" : "DDP", "TrackingNumber" : "0"}]
我不希望在JSON文件的开头看到ApiInvoiceReport,而josn最后应该以]结束。
我对XSLT的了解非常少,而且我已尽力而为,但我无法获得预期的输出。
提前致谢!
答案 0 :(得分:0)
以下是快速回答:
对于以下XSLT:
<?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output encoding="utf-8" method="text" omit-xml-declaration="yes"/>
<xsl:variable name="nl">
<xsl:text/>
</xsl:variable>
<xsl:variable name="tb">
<xsl:text/>
</xsl:variable>
<xsl:template match="/*/*">
<xsl:text>[{</xsl:text>
<xsl:value-of select="$nl"/>
<!-- Process all the child nodes of the root -->
<xsl:apply-templates mode="detect" select="*">
<xsl:with-param name="indent" select="$tb"/>
</xsl:apply-templates>
<!-- Close the root array -->
<xsl:value-of select="$nl"/>
<xsl:text/>}]
</xsl:template>
<xsl:template match="*" mode="detect">
<xsl:choose>
<xsl:when test="name(preceding-sibling::*[1]) = name(current()) and name(following-sibling::*[1]) != name(current())">
<xsl:apply-templates mode="obj-content" select="."/>
<xsl:text>]</xsl:text>
<xsl:if test="count(following-sibling::*[name() != name(current())]) > 0">, </xsl:if>
</xsl:when>
<xsl:when test="name(preceding-sibling::*[1]) = name(current())">
<xsl:apply-templates mode="obj-content" select="."/>
<xsl:if test="name(following-sibling::*) = name(current())">, </xsl:if>
</xsl:when>
<xsl:when test="following-sibling::*[1][name() = name(current())]">
<xsl:choose>
<xsl:when test="local-name(current()) = 'ApiInvoiceReport'">
<xsl:apply-templates mode="detect" select="*"/>
<xsl:text>}, </xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>"</xsl:text>
<xsl:value-of select="name()"/>
<xsl:text>" : [</xsl:text>
<xsl:apply-templates mode="obj-content" select="."/>
<xsl:text>, </xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="count(./child::*) > 0 or count(@*) > 0">
<xsl:text>"</xsl:text>
<xsl:value-of select="name()"/>" : [<xsl:apply-templates
mode="obj-content" select="."/>
<xsl:if test="count(following-sibling::*) > 0">], </xsl:if>
</xsl:when>
<xsl:when test="count(./child::*) = 0">
<xsl:text>"</xsl:text>
<xsl:value-of select="name()"/>" : "<xsl:apply-templates select="."/>
<xsl:text>"</xsl:text>
<xsl:if test="count(following-sibling::*) > 0">, </xsl:if>
</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template match="*" mode="obj-content">
<xsl:text>{</xsl:text>
<xsl:apply-templates mode="attr" select="@*"/>
<xsl:if test="count(@*) > 0 and (count(child::*) > 0 or text())">, </xsl:if>
<xsl:apply-templates mode="detect" select="./*"/>
<xsl:if test="count(child::*) = 0 and text() and not(@*)">
<xsl:text>"</xsl:text>
<xsl:value-of select="name()"/>" : "<xsl:value-of select="text()"/>
<xsl:text>"</xsl:text>
</xsl:if>
<xsl:if test="count(child::*) = 0 and text() and @*">
<xsl:text>: "</xsl:text>
<xsl:value-of select="text()"/>
<xsl:text>"</xsl:text>
</xsl:if>
<xsl:text>}</xsl:text>
<xsl:if test="position() < last()">, </xsl:if>
</xsl:template>
<xsl:template match="@*" mode="attr">
<xsl:text>"</xsl:text>
<xsl:value-of select="name()"/>" : "<xsl:value-of select="."/>
<xsl:text>"</xsl:text>
<xsl:if test="position() < last()">,</xsl:if>
</xsl:template>
<xsl:template match="node/@TEXT | text()" name="removeBreaks">
<xsl:param name="pText" select="normalize-space(.)"/>
<xsl:choose>
<xsl:when test="not(contains($pText, '
'))">
<xsl:copy-of select="$pText"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat(substring-before($pText, '
'), ' ')"/>
<xsl:call-template name="removeBreaks">
<xsl:with-param name="pText" select="substring-after($pText, '
')"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
&#13;
它产生以下结果:
[{"BillingAddress1" : "717 N. ATLANTIC AVE", "BillingCity" : "DAYTONA BEACH", "BillingCountry" : "US", "BillingCustomerCode" : "3001518", "BillingCustomerName" : "MAUI NIX - DAYTONA BEACH", "BillingState" : "FL", "BillingTelephone" : "32118", "DivisionCode" : "09", "FreightAmount" : "86.52", "InvoiceAmount" : "1041.96", "InvoiceCreatedDate" : "2016-06-18", "InvoiceItems" : [{"ColorCode" : "BLK", "GenderCode" : "M", "InvoiceItemSizes" : [{"InvoiceLineNumber" : "1000", "InvoiceNumber" : "1011063022016", "InvoicedQuantity" : "12", "SizeCode" : "1SZ", "SizeInvoicedPrice" : "24.52", "UPC" : "BBPKC1"}], "InvoiceLineNumber" : "1000", "InvoiceNumber" : "1011063022016", "InvoicedQuantity" : "12", "ProductInvoicedPrice" : "294.24", "ProductName" : "OVERTIME RIPSTOP HTR", "ProductNumber" : "BBPKC1BLK1SZ", "SeasonCode" : "USF16"}, {"ColorCode" : "BLU", "GenderCode" : "M", "InvoiceItemSizes" : [{"InvoiceLineNumber" : "2000", "InvoiceNumber" : "1011063022016", "InvoicedQuantity" : "12", "SizeCode" : "1SZ", "SizeInvoicedPrice" : "20.02", "UPC" : "BBPKL2"}], "InvoiceLineNumber" : "2000", "InvoiceNumber" : "1011063022016", "InvoicedQuantity" : "12", "ProductInvoicedPrice" : "240.24", "ProductName" : "CORE MEDINA", "ProductNumber" : "BBPKL2BLU1SZ", "SeasonCode" : "USF16"}, {"ColorCode" : "BRN", "GenderCode" : "M", "InvoiceItemSizes" : [{"InvoiceLineNumber" : "3000", "InvoiceNumber" : "1011063022016", "InvoicedQuantity" : "24", "SizeCode" : "1SZ", "SizeInvoicedPrice" : "8.77", "UPC" : "BWUFX3"}], "InvoiceLineNumber" : "3000", "InvoiceNumber" : "1011063022016", "InvoicedQuantity" : "24", "ProductInvoicedPrice" : "210.48", "ProductName" : "RIPPER BLOCK ALL DAY ZF", "ProductNumber" : "BWUFX3BRN1SZ", "SeasonCode" : "USF16"}, {"ColorCode" : "BLK", "GenderCode" : "M", "InvoiceItemSizes" : [{"InvoiceLineNumber" : "4000", "InvoiceNumber" : "1011063022016", "InvoicedQuantity" : "24", "SizeCode" : "1SZ", "SizeInvoicedPrice" : "8.77", "UPC" : "BWUFX3"}], "InvoiceLineNumber" : "4000", "InvoiceNumber" : "1011063022016", "InvoicedQuantity" : "24", "ProductInvoicedPrice" : "210.48", "ProductName" : "RIPPER BLOCK ALL DAY ZF", "ProductNumber" : "BWUFX3BLK1SZ", "SeasonCode" : "USF16"}], "InvoiceNumber" : "1011063022016", "InvoiceSentDate" : "2016-06-18", "InvoiceStatus" : "95", "InvoiceTotalQuantity" : "72.000000", "OrderNumber" : "0011353030", "PurchaseOrder" : "099THRCBAG160615", "SalesPersonCode" : "3310", "SeasonCode" : "USF16", "ShippingAddress1" : "717 N. ATLANTIC AVE", "ShippingCity" : "DAYTONA BEACH", "ShippingCountry" : "US", "ShippingCustomerCode" : "3001518", "ShippingCustomerName" : "MAUI NIX - DAYTONA BEACH", "ShippingMethodCode" : "006", "ShippingState" : "FL", "ShippingTelephone" : "32118", "TermsCode" : "DDP", "TrackingNumber" : "0"}]