2015-03-09 3 views
1

У меня есть кусок JSON (пример):как разразится отформатированный в ColdFusion JSON

["12086012800", ["XXX3220210230310", "XXX3220210260120", "XXX3220210170580", "XXX3220210170220", "XXX3220210270310", "XXX3220210080320", "XXX3220210110020", "XXX3220210220530", "XXX3220210020480", "XXX3220210170210", "XXX3220210230160", "XXX3220210060020", "XXX3220210220160", "XXX3220210110130", "XXX3220210021300", "XXX3220210260220", "XXX3220210260590", "XXX3220210210080", "XXX3220210020740", "XXX3220210020780", "XXX3220210270020", "XXX3220210260020", "XXX3220210230290", "XXX3220210260110", "XXX3220210080080", "XXX3220210110010", "XXX3220210220280", "XXX3220210230280", "XXX3220210021040", "XXX3220210220490", "XXX3220210220170", "XXX3220210230530", "XXX3220210020750", "XXX3220210060280", "XXX3220210230790", "XXX3220210230480", "XXX3220210220460", "XXX3220210260010"], 
    [{ 
     "lat": 25.91026573627833, 
     "lng": -80.34233093261719 
    }, { 
     "lat": 25.909648111101557, 
     "lng": -80.34602165222168 
    }, { 
     "lat": 25.905015819188293, 
     "lng": -80.34499168395996 
    }, { 
     "lat": 25.904243752850498, 
     "lng": -80.34310340881348 
    }, { 
     "lat": 25.906714347345247, 
     "lng": -80.34147262573242 
    }, { 
     "lat": 25.90972531442551, 
     "lng": -80.34233093261719 
    }] 
] 

Он приходит через на страницу кубометра в минуту от вызова $ .ajax:

var save = { 
    poly: function() { 
     var value = []; 
     value.push(GEOID); 
     value.push($.map(selected, function(el) { return el; })); 
     value.push(getpaths(poly)); 
     console.log(JSON.stringify(value)); 

     $.ajax({ 
      type: "POST", 
      url: 'data/geoselect_insert.cfm', 
      contentType: "application/json; charset=utf-8", 
      data: JSON.stringify(value), 
      async: false, 
      dataType: "json", 
      success: function (location) { 
       console.log("saved"); 
      } 
     }); 
    } 
} 

страница CFM мне нужно работать аналогично ниже:

<cfsetting showdebugoutput="yes"> 
<cfheader name="Content-Type" value="application/json"> 
<CFPARAM name="cookie.UserID" default="0"> 
<CFPARAM name="PropertySearchID" default="0"> 

<cfset ParcelJSON = toString(getHttpRequestData().content) /> 

<!--- Double-check to make sure it's a JSON value. ---> 
<cfif isJSON(ParcelJSON)> 


<cfset ParcelJSON2 = DeserializeJSON(ParcelJSON, true) > 
<cfoutput>#ParcelJSON2[0]#</cfoutput> 


</cfif> 

Я предполагаю, что ParcelJSON2 некоторая форма прорыве ParcelJSON. мне нужно разделить JSON на три переменные

<cfset Variable1 = (insert wisdom here) > <--"12086012800", 
<cfset Variable2 = (insert wisdom here) > <--["XXX3220210230310","X...] 
<cfset Variable3 = (insert wisdom here) > <--["lat":"23.9999"......] 

Я хочу, чтобы в cfquery выполнение проектно вставку, чтобы положить эти значения в. как сделать я нарушу поступающую JSON, не нарушая ребенка JSONs. Каждый ребенок JSON является своей собственной ценностью.

Любая мудрость бы весьма признателен

+4

Первые вещи первый «Я предполагаю, что ParcelJSON2 некоторая форма прорыве ParcelJSON». Не * предположите *, что: узнайте. Во-вторых: где ваш код показывает, что вы пробовали. Ни один из кода, который вы * * опубликовали (кроме примера JSON), не имеет отношения к вашей проблеме. Вероятно, вы могли бы это прочитать: http://blog.adamcameron.me/2012/12/need-help-know-how-to-ask-for-it.html и это: http: //blog.adamcameron. me/2013/09/short-self-contains-correct-compilable.html –

+1

Сделайте '' 'ParcelJSON2' (а не просто' ParcelJSON2 [0] ', чтобы увидеть, что это похоже. –

ответ

0

Часто в этом случае, я нахожу утешение в визуализации своих данных. Благодаря ColdFusion это просто. Непосредственно после вашего звонка до DeserializeJSON выгрузите данные, чтобы их можно было увидеть.

<cfdump var="#ParcelJSON2#"> 

На этом этапе вы увидите отформатированной ColdFusion дамп данных, которые вы можете получить, выход и манипулировать по своему усмотрению.

<cfset Variable1 = ParcelJSON[1] /> 
<cfset Variable2 = ParcelJSON[2] /> 
<cfset Variable3 = ParcelJSON[3] /> 

Если вам нужно вернуть JSON из CF-переменных, вы можете отменить часть процесса.

<cfset Variable1 = serializeJSON(ParcelJSON[1]) /> 
<cfset Variable2 = serializeJSON(ParcelJSON[2]) /> 
<cfset Variable3 = serializeJSON(ParcelJSON[3]) /> 

Наконец, чтобы убедиться, что он работает так, как вы хотите, попробуйте еще раз демпинг:

<cfdump var="#variables#"> 
+1

Это действительно работало замечательно. вы очень. – arcee123

0

После того, как вы десериализация вашего JSON его просто заканчивает сочетание массивов и структур. В вашем случае массив сложных объектов.

Итак, если JSON, который вы получаете, всегда в том же формате.

Я заметил, что в вашем примере вы используете Zero для ссылки на первый элемент в массивах CFML, начинающийся с One (в отличие от почти любого другого языка).

Так что-то вроде:

<cfset Variable1 = ParcelJSON2[1]> <--"12086012800", 
<cfset Variable2 = ParcelJSON2[2] > <--["XXX3220210230310","X...] 
<cfset Variable3 = ParcelJSON2[3] > <--["lat":"23.9999"......]