0

This is my c# code:

Dictionary<string, double[][]> dictionary = new Dictionary<string, double[][]>();
dictionary.Add("ServiceLevel", finalArray);
dictionary.Add("NumberOfCalls", numberOfCallsArray);

Where finalArray and numberOfCallsArray is double[][] full of data.

I send it to jquery like this:

string jsonformatstring = JsonConvert.SerializeObject(dictionary, Formatting.Indented);
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.ContentType = "application/json; charset=utf-8";
HttpContext.Current.Response.Write(jsonformatstring);
HttpContext.Current.Response.End();

Then in jquery after doing a json request and get the data successfully. I do this:

var data = $.map(result, function (arr, key) {
               return { label: key, data: arr };
           });

console.log(data["ServiceLevel"] + "--");

My problem

I got undefined in the console when I tried this: console.log(data["ServiceLevel"] + "--");

Maybe I am getting the value in the wrong way?

Update 1

I did this: console.log(result); and I got this

enter image description here

Update 2

I tried this:

var s = JSON.stringify(result); console.log(s)

The result is this:

{"ServiceLevel":[[1390608000000,50],[1392595200000,0],[1393286400000,66.66666666666667],[1393891200000,50],[1394064000000,0],[1394236800000,50],[1394323200000,0],[1394841600000,50],[1394928000000,33.333333],[1395014400000,0],[1395100800000,50],[1395273600000,0],[1395446400000,0],[1395619200000,0],[1395705600000,0],[1395878400000,50],[1396310400000,50],[1396483200000,0],[1396656000000,0],[1396828800000,50],[1396915200000,50],[1397001600000,50],[1397347200000,33.333333],[1397433600000,50],[1397952000000,0],[1398124800000,50],[1398556800000,0],[1398902400000,45],[1399075200000,0],[1399161600000,0],[1399334400000,0],[1399420800000,50],[1399680000000,0],[1399852800000,50],[1399939200000,0],[1400025600000,0],[1400112000000,33.333333],[1400284800000,40],[1400371200000,0],[1400457600000,50],[1400716800000,40],[1402185600000,50],[1402358400000,50],[1402531200000,0],[1402704000000,44.117647],[1402876800000,50],[1403308800000,50],[1403481600000,50],[1403913600000,0],[1407283200000,0],[1390780800000,100],[1391040000000,100],[1391558400000,100],[1392249600000,100],[1392681600000,75],[1392854400000,100],[1396137600000,100],[1397260800000,100],[1399507200000,100],[1400889600000,88.888888],[1401840000000,100],[1403654400000,100],[1407369600000,70.83333300000001],[1407628800000,100],[1408060800000,100],[1408233600000,50],[1408320000000,0]],"NumberOfCalls":[[1390608000000,50],[1392595200000,2],[1393286400000,14],[1393891200000,7],[1394064000000,1],[1394236800000,36],[1394323200000,3],[1394841600000,10],[1394928000000,11],[1395014400000,2],[1395100800000,45],[1395273600000,24],[1395446400000,13],[1395619200000,11],[1395705600000,11],[1395878400000,3],[1396310400000,18],[1396483200000,44],[1396656000000,2],[1396828800000,4],[1396915200000,25],[1397001600000,3],[1397347200000,11],[1397433600000,10],[1397952000000,15],[1398124800000,18],[1398556800000,1],[1398902400000,13],[1399075200000,2],[1399161600000,2],[1399334400000,1],[1399420800000,16],[1399680000000,3],[1399852800000,19],[1399939200000,32],[1400025600000,1],[1400112000000,20],[1400284800000,6],[1400371200000,3],[1400457600000,9],[1400716800000,12],[1402185600000,21],[1402358400000,14],[1402531200000,4],[1402704000000,37],[1402876800000,13],[1403308800000,18],[1403481600000,2],[1403913600000,1],[1407283200000,2],[1390780800000,2],[1391040000000,6],[1391558400000,6],[1392249600000,5],[1392681600000,6],[1392854400000,1],[1396137600000,2],[1397260800000,2],[1399507200000,1],[1400889600000,18],[1401840000000,6],[1403654400000,3],[1407369600000,16]
7
  • can you please post JSON object you got, that make more easy to answer Commented Aug 18, 2014 at 9:51
  • @Aaron do you mean console.log(result) ? Commented Aug 18, 2014 at 9:53
  • yes...do JSON.stringify(result), that will give json string of response object Commented Aug 18, 2014 at 9:54
  • @Aaron oh sorry, I edited the question before I saw your new comment. so did you mean var s = JSON.stringify(result); console.log(s) ? Commented Aug 18, 2014 at 9:57
  • yes, that what i wish :p Commented Aug 18, 2014 at 9:58

3 Answers 3

1

Your input is not clear, so i am assuming you got data something like

var result = {"ServiceLevel":[[1390608000000,50],[1392595200000,0]], 
              "NumberOfCalls":[[12,10],[100,0]]};

var arr = $.map(result, function (arr, key) {
return { label: key, data: arr }; });

Converting to Array:

var arr = $.map(result, function (arr, key) {
               return { label: key, data: arr };
           });

Reading Elements:

element at position 1:
 arr[0].data[0][1] is 1

 element at position 3:
 arr[0].data[2][2] is 3

to get key use:

arr[0].label , it will give you "ServiceLevel"
arr[1].label , it will give you "NumberOfCalls"
Sign up to request clarification or add additional context in comments.

12 Comments

the input is clear now I edit the question please check
it is same as used for example, you can find your object at 0 index of array...further multi-dimesional array can be find with key data. Note:label has no use, your data is always at 0 index object, as map function return single object
so let me explain what I want. in query I want to have a label ServiceLevel and its corresponding array and a label NumberOfCalls and its corresponding array. what wrong did I do and how to fix that? plus, I don't see the NumberOfCalls I don't know why:( help please
I though that using the dictionary in c# will send both values, but it seems just the first one, which is ServiceLevel has been send
please did you get what I want? or I explain more?
|
0
var data = $.map(result, function (arr, key) {
               return { label: key, data: arr };
           });

You're returning an associative array with "label" and "data" elements. data["data"] should contain what you're looking for.

If you did:

       $.map(result, function (arr, key) {
           console.log(arr["ServiceLevel"] + "--"); 
           return { label: key, data: arr };
       });

you'd see it being returned. it's just because you've wrapped your "data" in another array.

5 Comments

did you mean to comment the return statement in the map function?
so you mean to delete that map function at all? then do this var data = result ?
No, what I meant was the "var data" is set to an associative array containing "label" and "data". if you do data["data"] you'll get the real data
I already told you in the question that I tried data["ServiceLevel"] and I got undifined
Yes, because you're returning an array that has only "label" and "data" in it. "ServiceLevel" does not exist within the returned array, but it may within the inner array.
0

I believe you're getting undefined because you didn't parse the json you received from your c# code. I had this problem too, the thing is this :

string jsonformatstring = JsonConvert.SerializeObject(dictionary, Formatting.Indented);
        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.ContentType = "application/json; charset=utf-8";
        HttpContext.Current.Response.Write(jsonformatstring);
        HttpContext.Current.Response.End();

returns a String. To be used as Json you need to parse it, JsonConvert.SerializeObject only format the object into {[ key:value ]}.

here's a sample of an ajax success function i made with json :

success: function (data) {//on success
    var results = JSON.parse(data);         //parse result to work on it

    $.each(results, function (index, element) {
        //do something
    });

I don't know how you retrieve your Json string but try parsing it before working on it :)

1 Comment

please check my update question, it seems that just the ServiceLevel exist, not the NumberOfCalls why?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.