You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中根据userid和scripcode更新JSONArray的JSONObject

问题描述

我拥有两个JSONArray,分别为http和websocketjsonArray,需要实现以下需求:通过嵌套循环判断,当两个数组中的JSONObject的userid和scripcode字段均相同时,将websocketjsonArray中的数据(如bfqty字段)更新到http数组对应的JSONObject中。

尝试实现的代码

public class MainActivity extends AppCompatActivity {


    private JSONArray http;
    private JSONArray websocketjsonArray;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        try {
            http = new JSONArray("[{\"userid\":\"CNRM04\",\"groupname\":\"Rohit\",\n" +
                    "\"segment\":\"CosPROFIN\",\"accountcode\":\"OWN\",\"symbol\":\"NIFTY\",\"exchange\":\"NSEFO\",\n" +
                    "\"expirydate\":\"03NOV2022\",\"scripcode\":\"38021\",\"securitytype\":\"OPT\",\n" +
                    "\"strikeprice\":17700,\"opttype\":\"PE\",\"bfqty\":-1500,\"bfrate\":122.35,\n" +
                    "\"bfamt\":18352.5,\"buyqty\":0,\"sellqty\":0,\"netqty\":0,\"cfqty\":-150,\n" +
                    "\"cfamt\":18352.5,\"ltp\":0,\"grossmtm\":0,\"brokerageamt\":0,\"netmtm\":0,\n" +
                    "\"currency\":\"INR\",\"usdrate\":1,\"clientsharing\":0,\"broksharing\":0,\n" +
                    "\"comsharing\":100,\"multiplier\":1},{\"userid\":\"CNRM04\",\"groupname\":\"Rohit\",\n" +
                    "\"segment\":\"CosPROFIN\",\"accountcode\":\"OWN\",\"symbol\":\"NIFTY\",\n" +
                    "\"exchange\":\"NSEFO\",\"expirydate\":\"03NOV2022\",\"scripcode\":\"38026\",\n" +
                    "\"securitytype\":\"OPT\",\"strikeprice\":17800,\"opttype\":\"PE\",\"bfqty\":0,\n" +
                    "\"bfrate\":0,\"bfamt\":0,\"buyqty\":10800,\"sellqty\":15000,\"netqty\":-4200,\n" +
                    "\"cfqty\":-4200,\"cfamt\":590729.9999999998,\"ltp\":0,\"grossmtm\":0,\n" +
                    "\"brokerageamt\":3400.2888479999992,\"netmtm\":0,\"currency\":\"INR\",\n" +
                    "\"usdrate\":1,\"clientsharing\":0,\"broksharing\":0,\"comsharing\":100,\n" +
                    "\"multiplier\":11},{\"userid\":\"CNC01\",\"groupname\":\"abhishek\",\n" +
                    "\"segment\":\"Cosmic\",\"accountcode\":\"APP\",\"symbol\":\"NIFTY\",\n" +
                    "\"exchange\":\"NSEFO\",\"expirydate\":\"03NOV2022\",\"scripcode\":\"40034\",\n" +
                    "\"securitytype\":\"OPT\",\"strikeprice\":1200,\"opttype\":\"PE\",\"bfqty\":12,\n" +
                    "\"bfrate\":2,\"bfamt\":0,\"buyqty\":100,\"sellqty\":121,\"netqty\":200,\n" +
                    "\"cfqty\":11,\"cfamt\":78,\"ltp\":9,\"grossmtm\":0,\"brokerageamt\":12222,\n" +
                    "\"netmtm\":45,\"currency\":\"INR\",\"usdrate\":2,\"clientsharing\":0,\"broksharing\":0,\"comsharing\":0,\n" +
                    "\"multiplier\":99}]");

            System.out.println("http " + http);


            websocketjsonArray = new JSONArray("[{\"userid\":\"CNRM04\",\"groupname\":\"Rohit\",\"segment\":\"CosPROFIN\",\"accountcode\":\"OWN\",\"symbol\":\"NIFTY\",\"exchange\":\"NSEFO\",\"expirydate\":\"03NOV2022\",\"scripcode\":\"38021\",\"securitytype\":\"OPT\",\"strikeprice\":17700,\"opttype\":\"PE\",\"bfqty\":20,\"bfrate\":122.35,\"bfamt\":18352.5,\"buyqty\":0,\"sellqty\":0,\"netqty\":0,\"cfqty\":-150,\"cfamt\":18352.5,\"ltp\":0,\"grossmtm\":0,\"brokerageamt\":0,\"netmtm\":0,\"currency\":\"INR\",\"usdrate\":1,\"clientsharing\":0,\"broksharing\":0,\"comsharing\":100,\"multiplier\":1},{\"userid\":\"CNRM04\",\"groupname\":\"Rohit\",\"segment\":\"CosPROFIN\",\"accountcode\":\"OWN\",\"symbol\":\"NIFTY\",\"exchange\":\"NSEFO\",\"expirydate\":\"03NOV2022\",\"scripcode\":\"38026\",\"securitytype\":\"OPT\",\"strikeprice\":17800,\"opttype\":\"PE\",\"bfqty\":30,\"bfrate\":0,\"bfamt\":0,\"buyqty\":10800,\"sellqty\":15000,\"netqty\":-4200,\"cfqty\":-4200,\"cfamt\":590729.9999999998,\"ltp\":0,\"grossmtm\":0,\"brokerageamt\":3400.2888479999992,\"netmtm\":0,\"currency\":\"INR\",\"usdrate\":1,\"clientsharing\":0,\"broksharing\":0,\"comsharing\":100,\"multiplier\":1}]]");

            System.out.println("websocketarray " + websocketjsonArray);


            for (int k = 0; k < websocketjsonArray.length(); k++) {
                for (int l = 0; l < http.length(); l++) {

                    if (http.getJSONObject(l).getString("scripcode").equalsIgnoreCase(websocketjsonArray.getJSONObject(k).getString("scripcode")) &&
                            http.getJSONObject(l).getString("userid").equalsIgnoreCase(websocketjsonArray.getJSONObject(k).getString("userid"))) {


                        String g = websocketjsonArray.getJSONObject(l).getString("bfqty");

                        http.put(Integer.parseInt("0"),""+g);



                    }
                    System.out.println("gfgfgf " +http);

                }


            }


        } catch (JSONException e) {
            e.printStackTrace();
        }

    }
}

预期结果

匹配userid和scripcode的JSONObject的bfqty字段会被websocketjsonArray中的对应值替换,例如userid=CNRM04且scripcode=38021的JSONObject的bfqty从-1500更新为20,userid=CNRM04且scripcode=38026的bfqty从0更新为30,未匹配的JSONObject保持原有数据不变,预期输出如下:

[{"userid":"CNRM04","groupname":"Rohit","segment":"CosPROFIN","accountcode":"OWN","symbol":"NIFTY","exchange":"NSEFO", 
"expirydate":"03NOV2022","scripcode":"38021","securitytype":"OPT","strikeprice":17700,"opttype":"PE","bfqty":20,"bfrate":122.35,"bfamt":18352.5,"buyqty":0,"sellqty":0,
"netqty":0,"cfqty":-150, "cfamt":18352.5,"ltp":0,"grossmtm":0,"brokerageamt":0,"netmtm":0,"currency":"INR","usdrate":1,"clientsharing":0,"broksharing":0,"comsharing":100,"multiplier":1},
{"userid":"CNRM04","groupname":"Rohit","segment":"CosPROFIN","accountcode":"OWN","symbol":"NIFTY","exchange":"NSEFO","expirydate":"03NOV2022",
"scripcode":"38026","securitytype":"OPT","strikeprice":17800,"opttype":"PE","bfqty":30,"bfrate":0,"bfamt":0,"buyqty":10800,"sellqty":15000,"netqty":-4200,
"cfqty":-4200,"cfamt":590729.9999999998,"ltp":0,"grossmtm":0,"brokerageamt":3400.2888479999992,"netmtm":0,"currency":"INR",
"usdrate":1,"clientsharing":0,"broksharing":0,"comsharing":100,"multiplier":11},{"userid":"CNC01","groupname":"abhishek",
"segment":"Cosmic","accountcode":"APP","symbol":"NIFTY","exchange":"NSEFO","expirydate":"03NOV2022","scripcode":"40034","securitytype":"OPT",
"strikeprice":1200,"opttype":"PE","bfqty":12,"bfrate":2,"bfamt":0,"buyqty":100,"sellqty":121,"netqty":200,"cfqty":11,"cfamt":78,"ltp":9,
"grossmtm":0,"brokerageamt":12222,"netmtm":45,"currency":"INR","usdrate":2,"clientsharing":0,"broksharing":0,"comsharing":0,"multiplier":99}]

内容的提问来源于stack exchange,提问作者Abhishek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 01:20:20