C#转换JSON以JavaScript对象符号

问题描述:

在C#我想JSON转换成JS对象符号因此,例如这样的:C#转换JSON以JavaScript对象符号

{ 
    "personalizations":[ 
     { 
     "to":[ 
      { 
       "email":"[email protected]", 
       "name":"John" 
      } 
     ], 
     "subject":"Hello, World!" 
     } 
    ] 
} 

会产生这样的:

personalizations[0].to[0].email="[email protected]"; 
personalizations[0].subject="John"; 

任何想法?

+2

JSON.parse ???? –

+3

JSON === JavaScript对象表示法...没有转换 –

+0

对不起,这是一个C#问题..似乎无法编辑问题。所以在C#中,我希望从这个JSON生成这些属性分配。 – Josh

您是否尝试过原生js函数:JSON.parse(your_json)?

+0

我知道你没有足够的代表评论,但我会要求你保持耐心。以评论为答案可以吸引downvotes。因此,如果您选择回答,请确保它有理由回答 – Rajesh

+1

@Rajesh一个有用的链接:[为什么我需要50个评论声望?我能做些什么呢?](http://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an-i-do-instead) –

+0

Do你建议我删除我的答案? –

JSON代表JavaScript Object Notation。这就是这个词的意思。

我假设你的意思是你想一个JSON声明转化为赋值语句,你可以做到这一点很容易不够:

var data = { 
 
    "personalizations":[ 
 
     { 
 
     "to":[ 
 
      { 
 
       "email":"[email protected]", 
 
       "name":"John" 
 
      } 
 
     ], 
 
     "subject":"Hello, World!" 
 
     } 
 
    ] 
 
}; 
 

 
var personalizations = []; 
 

 
for(var i = 0; i< data.personalizations.length; i++) { 
 
    var p = {}; 
 
    p.subject = data.personalizations[i].subject; 
 
    // etc 
 
    
 
    personalizations[i] = p; 
 
} 
 

 
console.log(personalizations);

var oldObject = { 
    "personalizations":[ 
     { 
     "to":[ 
      { 
       "email":"[email protected]", 
       "name":"John" 
      } 
     ], 
     "subject":"Hello, World!" 
     } 
    ] 
}; 

var newObject = JSON.parse(oldObject); 
+0

您已将js对象传递给JSON.parse,而不是JSON字符串 –

+0

对不起,这是一个C#问题。 – Josh

+0

哦,对不起,以为它是javaScript。 – Lekens

你可以得到单修改值并建立一个字符串。

您可能需要一些更好的正则表达式来检查使用点符号的键。

function getParts(object, path) { 
 
    path = path || []; 
 
    return Object.keys(object).reduce(function (r, k) { 
 
     if (object[k] && typeof object[k] === 'object') { 
 
      return r.concat(getParts(object[k], path.concat(k))); 
 
     } 
 
     r.push(path.concat(k, object[k])); 
 
     return r; 
 
    }, []); 
 
} 
 

 
var data = { personalizations: [{ to: [{ email: "[email protected]", name: "John" }], subject: "Hello, World!" }] }, 
 
    result = getParts(data).map(function (a) { 
 
     var value = a.pop(); 
 
     return a.map(function (k, i) { 
 
      return /^[a-z_$][a-z0-9_$]*$/.test(k) ? (i ? '.' : '') + k : '[' + k + ']'; 
 
     }).concat('=' + (typeof value === 'string' ? '"' + value + '"' : value) + ';').join(''); 
 
    }); 
 

 
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }