iT邦幫忙

0

JS傳遞陣列字串給 C#後端,如何解

您好:
請問前端js 使用

我 dataArrString 是
arr =[ {NAME:'AA',AGE:18},{NAME:'BB',AGE:20},{NAME:'CC',AGE:30} ]

let str_arr = JSON.stringify(arr);
getXXX(str_arr); //

function getXXX(dataArrString) { // 現有架構需用&parameters=傳字串
var result = "";

        $.ajax({
            type: "POST",
            url: '...',  
            data: " ...."&parameters=" + dataArrString, 
            cache: false, async: false,
            success: function (data) {
                result = data; 
            }
        });
        return result;

    } 

這樣 我C# 後端
public object getXXX(object[] objParam) // 取得 GRID結果回傳
{
string paraX = (string)objParam[0];

	}
	

1.我該如何 將 傳入的array解開,然後取出每一個json
用JSONArray 他說不可用(紅字),JSONObject 也有問題

2.還是前端除了[{},{},{}] 外
也可用{ {},{},{} }
來處理? 該如何做
謝謝

1 個回答

1
通靈亡
iT邦研究生 3 級 ‧ 2020-06-20 16:26:09

C#處理JSON建議用newtonsoft json套件

1.將JSON string => JArray
https://www.newtonsoft.com/json/help/html/ParseJsonArray.htm

string json = "[{NAME:'AA',AGE:18},{NAME:'BB',AGE:20},{NAME:'CC',AGE:30}]";
JArray jArray = JArray.Parse(json);

Console.WriteLine(jArray.ToString());

2.使用ForEach存取JArray當中所有的JSON

foreach (JObject json in jArray)
{
    string name = json.GetValue("NAME").ToString();
    string age = json.GetValue("AGE").ToString();
}
看更多先前的回應...收起先前的回應...
noway iT邦新手 5 級 ‧ 2020-06-20 17:14:22 檢舉

您好:
謝謝
但 我 由foreach (JObject json in jArray)
json DEBUG 出來的結果
是否多了一組{}
因為string order = json.GetValue("order").ToString();
就錯誤!

謝謝!

{{

"ordno": "O12345678",
"item": "03"

}}

{{

"ordno": "O12345678",
"item": "02"

}}

通靈亡 iT邦研究生 3 級 ‧ 2020-06-20 17:29:21 檢舉

因為是Null的關係所以會有錯
你可以寫判斷式處理,例如:

string order = "";
if (json.GetValue("order") != null) 
{
    order = json.GetValue("order").ToString();
}

如果嫌這樣太長,可以用 ?? (null-coalescing-operator) 的寫法化簡,相當於:

string order = (json.GetValue("order") ?? "").ToString();

或者

string order = json.GetValue("order")?.ToString() ?? "";

另外稍微提醒一下
在描述問題的內容時,如果有出現錯誤
最好提供出現的錯誤訊息或畫面
還有善用</>來貼程式碼

noway iT邦新手 5 級 ‧ 2020-06-20 18:29:05 檢舉

您好:
謝謝您的指導 和 提醒
另外想請問 一般在前端
是用 [{},{},{}]
還是 { {},{},{} } 來傳遞較好?
若 { {},{},{} } 用法也一樣嗎?
謝謝!

通靈亡 iT邦研究生 3 級 ‧ 2020-06-20 18:48:35 檢舉

1.一般前端會用[{},{},{}]來傳
{} 代表一個JSON物件
[{},{}] 代表用一個Array存放N個JSON物件

2.不會有{{},{}}的格式
通常會是{property1:{}, property2: {}}
代表一個JSON物件的某個property,存放另一個JSON物件

而你的情境適合用第1點的方式

noway iT邦新手 5 級 ‧ 2020-06-21 14:57:28 檢舉

您好:謝謝您!

我要發表回答

立即登入回答