I'm trying to process a Magento object with JSON. Using json_encode($order->getData()) or Mage::helper('core')->jsonEncode($order->getData()), I get output such as the following:
{
"entity_id": "1",
"state": "complete",
"status": "complete",
"coupon_code": null,
"protect_code": "30447e",
"shipping_description": "U.S. Postal Service - First Class",
"is_virtual": "0",
"store_id": "1",
"customer_id": null,
"base_discount_amount": "0.0000",
"base_discount_canceled": "0.0000",
"base_discount_invoiced": "0.0000",
"base_discount_refunded": null,
"base_grand_total": "8.6500",
"base_shipping_amount": "3.3000",
"base_shipping_canceled": null,
"base_shipping_invoiced": "3.3000",
"base_shipping_refunded": null,
"base_shipping_tax_amount": "0.0000",
"base_shipping_tax_refunded": null,
"base_subtotal": "5.3500",
"base_subtotal_canceled": null,
"base_subtotal_invoiced": "5.3500",
"base_subtotal_refunded": null,
"base_tax_amount": "0.0000",
"base_tax_canceled": null,
"base_tax_invoiced": "0.0000",
"base_tax_refunded": null,
"base_to_global_rate": "1.0000",
"base_to_order_rate": "1.0000",
"base_total_canceled": null,
"base_total_invoiced": "8.6500",
"base_total_invoiced_cost": null,
"base_total_offline_refunded": "0.0000",
"base_total_online_refunded": "0.0000",
"base_total_paid": "8.6500",
"base_total_qty_ordered": "0.0000",
"base_total_refunded": "0.0000",
"discount_amount": "0.0000",
"discount_canceled": "0.0000",
"discount_invoiced": "0.0000",
"discount_refunded": null,
"grand_total": "8.6500",
"shipping_amount": "3.3000",
"shipping_canceled": null,
"shipping_invoiced": "3.3000",
"shipping_refunded": null,
"shipping_tax_amount": "0.0000",
"shipping_tax_refunded": null,
"store_to_base_rate": "1.0000",
"store_to_order_rate": "1.0000",
"subtotal": "5.3500",
"subtotal_canceled": null,
"subtotal_invoiced": "5.3500",
"subtotal_refunded": null,
"tax_amount": "0.0000",
"tax_canceled": null,
"tax_invoiced": "0.0000",
"tax_refunded": null,
"total_canceled": null,
"total_invoiced": "8.6500",
"total_offline_refunded": "0.0000",
"total_online_refunded": "0.0000",
"total_paid": "8.6500",
"total_qty_ordered": "1.0000",
"total_refunded": "0.0000",
"can_ship_partially": null,
"can_ship_partially_item": null,
"customer_is_guest": "1",
"customer_note_notify": "1",
"billing_address_id": "1",
"customer_group_id": "0",
"edit_increment": null,
"email_sent": "1",
"forced_shipment_with_invoice": null,
"gift_message_id": null,
"payment_auth_expiration": null,
"paypal_ipn_customer_notified": null,
"quote_address_id": null,
"quote_id": "8",
"shipping_address_id": "2",
"adjustment_negative": null,
"adjustment_positive": null,
"base_adjustment_negative": null,
"base_adjustment_positive": null,
"base_shipping_discount_amount": null,
"base_subtotal_incl_tax": null,
"base_total_due": null,
"payment_authorization_amount": null,
"shipping_discount_amount": null,
"subtotal_incl_tax": null,
"total_due": null,
"weight": "0.2200",
"customer_dob": null,
"increment_id": "100000002",
"applied_rule_ids": "",
"base_currency_code": "USD",
"customer_email": "[email protected]",
"customer_firstname": null,
"customer_lastname": null,
"customer_middlename": null,
"customer_prefix": null,
"customer_suffix": null,
"customer_taxvat": null,
"discount_description": null,
"ext_customer_id": null,
"ext_order_id": null,
"global_currency_code": "USD",
"hold_before_state": null,
"hold_before_status": null,
"order_currency_code": "USD",
"original_increment_id": null,
"relation_child_id": null,
"relation_child_real_id": null,
"relation_parent_id": null,
"relation_parent_real_id": null,
"remote_ip": "63.230.211.89",
"shipping_method": "tablerate_bestway",
"store_currency_code": "USD",
"store_name": "Main Website\nStore\nDefault Store View",
"x_forwarded_for": null,
"customer_note": null,
"created_at": "2009-05-15 23:14:53",
"updated_at": "2009-05-16 15:01:29",
"total_item_count": "1",
"customer_gender": null,
"base_custbalance_amount": null,
"custbalance_amount": null,
"is_multi_payment": null,
"hidden_tax_amount": null,
"base_hidden_tax_amount": null,
"shipping_hidden_tax_amount": null,
"base_shipping_hidden_tax_amnt": null,
"hidden_tax_invoiced": null,
"base_hidden_tax_invoiced": null,
"hidden_tax_refunded": null,
"base_hidden_tax_refunded": null,
"shipping_incl_tax": null,
"base_shipping_incl_tax": null,
"coupon_rule_name": null,
"auctaneapi_discounts": null,
"payment_authorization_expiration": null,
"forced_do_shipment_with_invoice": null,
"base_shipping_hidden_tax_amount": null
}
Note how integers, decimals and currency are quoted. This isn't proper JSON-formatting as it processes as a string rather than a number. Anyone know how to modify this either with custom options or a special function that converts these to non-quoted numbers instead of strings?